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

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

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

Скачать 
Обложка книги «»

Linked List 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.


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

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

Наши тесты для вас:
Какой язык программирования стоит выбрать для изучения?
Что вы знаете о работе мозга?
Насколько вы гиканутый?