Не для манки-кодеров: бесплатные книги по алгоритмам и структурам данных

Чтобы быть хорошим программистом, мало знать синтаксис какого-нибудь языка и хорошо писать код. Когда речь идет о маленьких шаблонных проектах, этого хватит. Но вот вы сталкиваетесь с чем-то по-настоящему серьезным и масштабным, и становится ясно — без знания алгоритмов и умения работать со структурами данных вы далеко не уйдете.

Tproger вам поможет — в этой статье вы найдете подборку книг, которые помогут вам начать путь настоящего программиста. Кстати, для знакомства с темой рекомендуем почитать нашу серию статей об алгоритмах и структурах данных.

Algorithms, Etc.

Это лекции и другие учебные заметки к курсам по алгоритмам в Иллинойсском университете в Урбане-Шампейне. Помимо теории, на сайте можно найти большое количество домашних и экзаменационных заданий — правда, без ответов.


Algorithms (Алгоритмы на Java)

Книга Седжвика и Уэйна «Алгоритмы на Java» является классическим справочным руководством, в котором содержится необходимый для программиста объем знаний в области алгоритмов, накопленных за последние несколько десятилетий.

В книге представлен широкий спектр рассматриваемых тем: исчерпывающее толкование структур данных и алгоритмов сортировки, поиска, обработки графов и строк, включая пятьдесят алгоритмов, которые должен знать каждый программист. Описываются новые реализации алгоритмов на Java, написанные в ясном модульном стиле, при котором весь код доступен читателю и полностью готов к использованию. В книге изучение алгоритмов на Java ведется в контексте важнейших научных, инженерных и коммерческих приложений.


Binary Trees

Небольшая методичка Стенфордского университета, целиком посвящённая двоичным деревьям. Внимание уделено как теории, так и задачкам с разборами решений, причём и на Java, и на C.


Clever Algorithms: Nature-Inspired Programming Recipes

В этой книге автор систематизирует информацию о наиболее популярных алгоритмах, используемых в сфере машинного обучения и искусственного интеллекта. Она отлично подойдет студентам, преподавателям и просто людям, интересующимся разработкой ИИ, как подробный справочник.


The Algorithm Design Manual

Книга является одним из наиболее полных руководств по разработке эффективных алгоритмов. Первая часть книги содержит практические рекомендации по разработке алгоритмов: приводятся основные понятия, дается анализ алгоритмов, рассматриваются типы структур данных, основные алгоритмы сортировки, операции обхода графов и алгоритмы для работы со взвешенными графами, примеры использования комбинаторного поиска, эвристических методов и динамического программирования. Вторая часть книги содержит обширный список литературы и каталог из 75 наиболее распространенных алгоритмических задач, для которых перечислены существующие программные реализации.

Книгу можно использовать в качестве справочника по алгоритмам для программистов, исследователей и в качестве учебного пособия для студентов соответствующих специальностей.


Planning Algorithms

В этой книге собрано огромное количество алгоритмов планирования. Они так или иначе используются в робототехнике, теории управления, ИИ и компьютерной графике. Теоретический материал снабжён большим количеством иллюстраций и примеров.


Linked List Basics & Problems

Ещё две методички из Стенфорда. Первая содержит теоретические материалы, посвящённые связным спискам, а вторая — 18 задач. Пригодятся всем, кто изучает C и хочет узнать о возможностях применения указателей.


Purely Functional Data Structures

Эта книга рассказывает об особенностях функциональных структур данных. В ней разобраны функциональные реализации многих структур: списков, очередей, куч и других.


Matters Computational

В этой книге рассматривается огромное количество различных низкоуровневых алгоритмов. Для реализации примеров используется C++. Рекомендуем к прочтению всем, кто так или иначе работает с вычислениями.


Text Algorithms

Данная книга посвящена алгоритмам обработки текста. В ней последовательно разбираются различные алгоритмы сравнения строк и структуры данных. Книгу можно мысленно разделить на две части, посвящённые практическим и теоретическим алгоритмам соответственно, поэтому каждый найдёт в ней что-то интересное.


The Design of Approximation Algorithms

Эта книга предназначена для тех, кто уже знаком с основами алгоритмов, способами доказательства их истинности и теорией вероятности. Пригодится студентам, работающим с приближёнными (аппроксимирующими) вычислениями.


Data Structures and Algorithms

Авторы книги преследовали три цели: объяснить основные алгоритмы как можно проще и при этом точнее, снабдить их диаграммами и написать понятные листинги на псевдокоде, которые можно без особых проблем перевести на C++, C# и Java. Удалось ли им это — прочтите и узнаете 🙂


Data Structures (Into Java)

В этой книге рассматриваются такие темы, как сложность алгоритмов, последовательности, деревья, хеширование, сортировка и выбор, конкурентность, случайные числа и графы. Все примеры кода приведены на Java.


Think Complexity

Прокачайте свои навыки владения Python, изучив структуры данных и алгоритмы с точки зрения теории сложных систем. Вы познакомитесь с графами, методами анализа алгоритмов, масштабируемых сетей и клеточных автоматов, попутно работая с предложенными студентами и читателями примерами таких систем. Кстати, черновик второго издания этой книги тоже доступен для чтения и скачивания.


Open Data Structures

В этой книге рассматриваются структуры данных для последовательностей (списков), очередей, очередей с приоритетом, словарей и графов. Представлено огромное количество оптимизированных реализаций, исходные коды которых доступны для скачивания.


Elementary Algorithms

В этой книге описаны реализации основных алгоритмов и структур данных. Для наглядности приведено много иллюстраций и примеров кода на Haskell, C/C++, Python и Scheme. При этом рассматривается не только процедурный, но и функциональный подход к решению задач.


Handbook of Graph Drawing and Visualization

В этом пособии собрано огромное количество полезной информации о работе с графами и их визуализации. Книга будет интересна широкому кругу студентов и исследователей, поскольку графы используются во многих областях науки.


Think Data Structures

Это относительно небольшая книга, автор которой постарался нескучным языком познакомить читателей со структурами данных и алгоритмами. В конце каждой темы есть упражнения для самостоятельной проверки (решения доступны на GitHub). Читателям крайне рекомендуется знать Java.


Если мы пропустили хорошие книги по этой теме, делитесь ими в коммментариях.

Иван Бирюков, главный по новостям