Написать пост

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

Аватар Иван Бирюков

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

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

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

Algorithms, Etc.

Algorithms, Etc.

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

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

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

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

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

Binary Trees

Binary Trees

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

Linked List Basics

Linked List Basics

Linked List Problems

Linked List Problems

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

Clever Algorithms: Nature-Inspired Programming Recipes

Clever Algorithms: Nature-Inspired Programming Recipes

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

The Algorithm Design Manual

The Algorithm Design Manual

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

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

Жемчужины проектирования алгоритмов: функциональный подход

Жемчужины проектирования алгоритмов: функциональный подход

Отличная книга по алгоритмам, использующая неординарный подход.

Книга разделена на 30 глав, каждая из которых называется жемчужиной. В начале главы читателю дается задача, например, на сжатие данных либо связанная с игрой. Задача формулируется с помощью языка Haskell. Затем с помощью методов функционального программирования «скелет» программы начинает обрастать различными готовыми функциями. Таким образом читатель сможет лучше вникнуть в суть того или иного алгоритма.

Алгоритмы. Вводный курс

Алгоритмы. Вводный курс

Если «Алгоритмы. Построение и анализ» — фундаментальный труд, призванный дать максимум информации по тем или иным алгоритмам, то книга «Алгоритмы. Вводный курс», написанная тем же профессором информатики Томасом Корменом, рассчитана на аудиторию, не готовую осилить труд в 1300 страниц. Так что если вы — один из таких, но, тем не менее, вам необходимо ознакомиться с алгоритмами, то эта книга для вас.

Алгоритмы. Построение и анализ

Алгоритмы. Построение и анализ

Ещё одна увесистая книга по алгоритмам, впервые изданная в 1990 году в Массачусетском технологическом институте с авторством местных преподавателей. Несмотря на то, что написана она простым и понятным языком, из-за объёма и подачи материала (каждая глава имеет законченный вид) использовать лучше в качестве справочника, периодически обращаясь к нужной информации.

Искусство программирования

Искусство программирования

Искусство программирования — монументальный труд Дональда Кнута. Серия книг состоит из 4 томов, каждый из которых охватывает определенные виды алгоритмов. Это классика, которую до сих пор в обязательном порядке проходят в ВУЗах. Материал подан в достаточно сложном формате, но и цель у книг особенная — рассказать наиболее полно о существующих алгоритмах.

Алгоритмические трюки для программистов

Алгоритмические трюки для программистов

Автор Генри Уоррен описал в своей книге множество приемов, которым он научился за несколько десятков лет, работая в области разработки компиляторов и архитектуры компьютеров, прикладного и системного программирования. Здесь вы найдете множество приемов для работы с отдельными битами, байтами, вычисления различных целочисленных функций; большей части материала сопутствует строгое математическое обоснование.

Во втором издании был добавлен материал о CRC, кодах с коррекцией ошибок (ECC), различных методах деления на константы (например, с помощью сдвигов байтов) и о многом другом.

Алгоритмы. Справочник с примерами на C, C++, Java и Python

Алгоритмы. Справочник с примерами на C, C++, Java и Python

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

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

Purely Functional Data Structures

Purely Functional Data Structures

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

Matters Computational

Matters Computational

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

Text Algorithms

Text Algorithms

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

The Design of Approximation Algorithms

The Design of Approximation Algorithms

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

Data Structures and Algorithms

Data Structures and Algorithms

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

Data Structures (Into Java)

Data Structures (Into Java)

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

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

Open Data Structures

Open Data Structures

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

Elementary Algorithms

Elementary Algorithms

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

Handbook of Graph Drawing and Visualization

Handbook of Graph Drawing and Visualization

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

Think Data Structures

Think Data Structures

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

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

Следите за новыми постами
Следите за новыми постами по любимым темам
121К открытий121К показов