Разное

Книги алгоритмы и структуры данных: Топ-7 книг по алгоритмам на русском языке

Содержание

Топ-7 книг по алгоритмам на русском языке

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

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

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

1. Грокаем алгоритмы

Автор: Адитья Бхаргава. Год издания: 2017.

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

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

Особо стоит отметить, что книга написана
очень легким языком, а сложные темы в
ней объясняются на простых жизненных
примерах. Кроме того, все объяснения
сопровождаются тематическими иллюстрациями
и графиками (их около 400) — чтобы уж точно
всем все стало понятно.

2. Совершенный алгоритм.
Основы

Автор: Тим Рафгарден. Год издания: 2019.

Тим Рафгарден — профессор информатики, член института Data Science при Колумбийском университете. Серия книг «Совершенный алгоритм» (англ. Algorithms Illuminated) написана им на основе онлайн-курсов, которые он ведет на платформах Coursera и edX.

Первая часть серии представляет собой
доступное введение в основы алгоритмов.
Объяснение не привязано к каком-либо
языку программирования. В этой книге
автор рассматривает асимптотический
анализ алгоритмов и нотацию О-большое
(а также Омега-большое и Тета-большое),
парадигму «разделяй и властвуй»,
рандомизированные алгоритмы и, конечно,
несколько самых известных алгоритмов
сортировки.

В этой книге читатели также найдут
упражнения на закрепление материала и
разборы решений.

3. Совершенный алгоритм.
Графовые алгоритмы и структуры данных

Автор: Рафгарден Тим. Год издания:
2019.

Это вторая книга серии «Совершенный алгоритм». В ней рассматриваются такие темы как графы, алгоритм кратчайшего пути Дейкстры, куча и дерево поиска, хеш-таблицы и фильтры Блума. Как и первой части, здесь к объяснениям прилагаются задачи на закрепление материала (с решениями).

4. Алгоритмы для начинающих

Автор: Луридас Панос. Год издания:
2018.

Это учебное пособие предназначено для людей, не имеющих бэкграунда в продвинутых темах математики и информатики. Упор в книге делается на задачи и жизненные примеры. Разбираемые алгоритмы представлены в виде псевдокода и легко могут быть реализованы на любом языке программирования, включая Python.

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

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

5. Введение в анализ алгоритмов

Автор: Майкл Солтис. Год издания: 2019.

Это второе, полностью обновленное и переработанное издание книги.

«Введение в анализ алгоритмов» будет
отличным учебным руководством и
справочником как студентов, так и для
разработчиков, ориентированных на
создание надежного кода. Материал в
книге изложен достаточно сжато, но, тем
не менее, он охватывает все необходимые
основы.

В книге рассмотрены традиционные для
информатики алгоритмы, такие как жадный
алгоритм, динамическое программирование,
«разделяй и властвуй». Но кроме того
автор рассматривает два класса алгоритмов,
которые часто выпадают из поля зрения,
— рандомизированные и онлайн-алгоритмы
(с упором на сами алгоритмы). И это очень
кстати, ведь первые повсеместно
применяются в криптографии, а вторые
необходимы в очень многих областях, от
создания ОС до прогнозирования фондового
рынка.

6. Алгоритмы: разработка и
применение

Авторы: Джон Клейнберг, Эва Тардос.
Год издания: 2016.

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

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

В книге рассматриваются (среди прочих)
такие темы как основы анализа алгоритмов,
графы, жадные алгоритмы, алгоритмы
«разделяй и властвуй», динамическое
программирование, NP-полнота, аппроксимирующие
и рандомизированные алгоритмы.

7. Алгоритмы. Руководство по
разработке

Автор: Стивен С. Скиена. Год издания:
2011.

Книга, ставшая классикой. Первое издание вышло еще в 1997 году. Мы представляем вам второе издание, которое было существенно обновлено.

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

полезные книги, веб-сайты, онлайн-курсы и видеоматериалы

В этой подборке представлен список книг, веб-сайтов и онлайн-курсов, дающих понимание как простых, так и продвинутых алгоритмов.

Воодушевленный awesome-awesomeness и некоторыми другими шикарными библиотеками, я написал список лучших, на мой взгляд, источников для изучения и практики знаний алгоритмов. Если вы хотите поспособствовать развитию списка, пожалуйста, прочтите Гайд по развитию списка.

Веб-сайты, которые вам стоит использовать, чтоб выучить классические алгоритмы:

  • A Visual Guide to Graph Traversal Algorithms — Интерактивная визуализация показывает, как работает алгоритм поиска в глубину графа.
  • Algomation — Поучительное и анимированное описание алгоритмов.
  • Algorithm Visualizer — Тонны анимированых алгоритмов (с кодом, конечно же), можно также создавать свои алгоритмы.
  • Algorithms Visualization — Коротенькая статья, посвящённая визуализации алгоритмов.
  • Big-O Cheat Sheet — Сложности повседневных алгоритмов, используемых в анализе данных.
  • Data Structure Visualizations — Визуализируйте поведение структур данных и делайте операции с ними.
  • Geeks for Geeks — Много-много хорошо объяснённых и реализованных алгоритмов.
  • Rosetta Code — Хрестоматия по программированию, цель которой — показать использование множества алгоритмов и структур данных в разных языках программирования.
  • Sorting Algorithms — Красивые и простые анимации алгоритмов сортировки, не без коротеньких примеров с кодом и их обсуждений.
  • Stoimen’s web log — Некоторые алгоритмы, которые очень понятно объяснены.
  • VisuAlgo — Визуализация структур данных и алгоритмов посредством анимации.
  • Wikipedia — Algorithms — Ко-неч-но-же!
  • Wikipedia — Data Structures — А почему бы и нет?

Бесплатные и качественные курсы онлайн:

  • Algorithms: Divide and Conquer, Sorting and Searching, and Randomized Algorithms — Основные темы: асимптотика («Большое О(х)»), сортировка и поиск, разделяй и властвуй, а также другие разные алгоритмы.
  • Algorithms: Graph Search, Shortest Paths, and Data Structures — Основные темы: структуры данных, графы и их применения.
  • Algorithms: Greedy Algorithms, Minimum Spanning Trees, and Dynamic Programming — Основные темы: жадные алгоритмы и динамическое программирование.
  • Algorithms: Shortest Paths Revisited, NP-Complete Problems and What To Do About Them — Основные темы: кратчайший путь, NP-полные задачи и что это все значит для разработчика.
  • Algorithms, Part 1 — Этот курс затрагивает необходимую информацию об алгоритмах и структурах данных, в которой нуждается каждый программист, который серьезно относится к своему делу. Курс рассказывает о структурах данных, сортировке и алгоритмах поиска.
  • Algorithms, Part 2 — Вторая часть курса, которая сфокусирована на жадном алгоритме и динамических парадигмах, а также на NP-полных задачах.
  • Khan Academy Algorithms — курс по алгоритмам, созданный Томасом Корменом и Девином Балккомом.
  • MIT-6-006 — Хорошо описанные алгоритмы.
  • MIT-6-046j — Такой же курс, как и предыдущий, только с другими алгоритмами.
  • MIT-6-00sc — Простое и понятное введение в алгоритмы.
  • Udacity Intro to Algorithms — Курс по алгоритмам на Python.

Самые популярные книги для изучения алгоритмов:

Англоязычные:

  • Algorithm Design — Раскрывает суть решения задач, встречающихся в жизни.
  • Algorithms — Решения задач на Java, описание хороших практик ООП и бесплатные онлайн-курсы.
  • Data Structures Using C — Примеры использования структур данных.
  • Elementary Algorithms — Потрясающая книга об алгоритмах и структурах данных.
  • Grokking Algorithms — Книга об алгоритмах и их практических применениях с множеством иллюстраций.
  • Introduction to Algorithms — Необходима к прочтению!
  • Swift Algorithms and Data Structures — Практическое руководство по теории и коду.
  • The Algorithm Design Manual — Книгу легко читать, и она полна примеров из жизни.
  • The Art of Computer Programming — Просто хорошая книга.

Русскоязычные:

Новичку

  • Алгоритмы на Java — Исчерпывающее толкование структур данных и алгоритмов сортировки, поиска, обработки графов и строк, включая пятьдесят алгоритмов, которые должен знать каждый программист.
  • Алгоритмы. Вводный курс — Книга предназначена для всех, кого интересуют вопросы, связанные с компьютерными алгоритмами, но отсутствие времени не позволяет взяться за серьезный труд.
  • Карты метро и нейронные сети. Теория графов — Отличная книга для тех, кому не терпится познать такой раздел математики, как Теория графов.
  • Дискретная математика для программистов — Основополагающее введение в дискретную математику, без знания которой невозможно успешно заниматься информатикой и программированием.
  • Дискретный анализ — Пособие написано по материалам вводного лекционного курса математико-механического факультета Санкт-Петербургского государственного университета.
  • Дискретная математика — В этом учебнике изложены все основные разделы дискретной математики и описаны важнейшие алгоритмы на дискретных структурах данных.
  • Problem Solving with Algorithms and Data Structures (перевод) — Изложение в книге идёт от простого (что такое алгоритм, как оценить его производительность) к сложному (деревья, графы) с живыми примерами и кодом.
  • Алгоритмы — В этой книге подробно разбираются основные методы построения и анализа эффективных алгоритмов.
  • Структуры данных и алгоритмы в Java — Помимо простых и ясных примеров, автор приводит небольшую демонстрационную программу, которую можно запустить в веб-браузере.
  • Анализ алгоритмов. Вводный курс — Особое внимание уделено алгоритмам параллельной обработки, редко освещаемым в литературе на русском языке.
  • Программирование: теоремы и задачи — Книга содержит задачи (с решениями) по программированию различной трудности.
  • Алгоритмы. Теория и практическое применение — Из этой книги вы узнаете, где алгоритмы применяются и как их анализировать, чтобы понять их поведение.

Знающему основы для углубленного изучения

Профессионалу

  • Теория и практика С++ — Книга посвящена обсуждению сложных вопросов программирования., каких как реализация разреженных массивов, алгоритмы шифрования и сжатия данных, а также проблемы разработки собственных языков программирования и написания интерпретаторов для них.
  • Искусство программирования — Эта книга была признана одной из двенадцати лучших физико-математических монографий столетия.
  • Алгоритмы. Построение и анализ — Книга удачно объединяет в себе полноту охвата и строгость изложения материала.
  • Algolist. Алгоритмы, методы, исходники — Огромный список разнообразных алгоритмов по математике, графике, кодированию, сортировкам, структурам данных, нервным сетям и многому другому.

Реализация большинства классических алгоритмов во многих языках программирования

C

CoffeeScript

C#

C++

Erlang

Go

Java

JavaScript

Objective-C

Python

Ruby

Scala

Swift

Языково-независимые

Онлайн-практика для того, чтоб оттачивать свои навыки:

  • ACM-ICPC Live Archive — Сотни задач с предыдущих региональных состязаний ACM-ICPC и мировых состязаний World Finals.
  • AIZU ONLINE JUDGE — Японская онлайн практика.
  • CodeChef — Больше задач и ежемесячные состязания.
  • Codeforces — Единственный сайт, где можно посостязаться в знаниях платформы Web 2.0.
  • CodeWars — Веб-сайт, который предлагает задачи по алгоритмам на многих языках и для многих уровней сложности.
  • CoderByte — Скромный веб-сайт с задачами на оттачивание алгоритмов для начального и продвинутого уровней. Поддерживает множество популярных языков программирования, таких как С++, Python, JavaScript, Ruby и так далее.
  • HackerEarth — Решайте задачи, используя алгоритмы и принимайте участие в решении задач, которые задают при приёме на работу.
  • HackerRank — Онлайн практика по известным алгоритмам и функциональном программировании.
  • Infoarena — Румынская онлайн-практика. 1500+ задач по алгоритмам.
  • LavidaOnlineJudge — Корейская онлайн-практика(около половины на английском) 1300+ задач.
  • Learneroo Algorithms Tutorials — Учитесь и практикуйтесь в написании алгоритмов, решая задачи онлайн.
  • LeetCode — Выучите алгоритмы и подготовьтесь к интервью.
  • PKU JudgeOnline — Китайская онлайн-практика.
  • ProjectEuler — Математические задачи, которые могут быть решены с использованием алгоритмов (или даже с помощью карандаша, зависит от того, сколько вы уже знаете).
  • Rosalind — Платформа для изучения биоинформатики и программирования, решая задачи.
  • ShareCode — Онлайн практика и состязания с множеством задач по алгоритмам.
  • Snakify — Вводный курс по Python с 100+ задачами по алгоритмам и отладке (российский).
  • SPOJ — Еще больше задач.
  • TopCoder — Множество задач по графическому дизайну, анализу данных и разработки в целом.
  • URI — Бразильская онлайн-практика. Не так много задач по сравнению с конкурентами, но их база растет, а также у них есть онлайн-состязания.
  • UVA — Ещё много задач с предыдущих региональных состязаний ACM-ICPC и мировых состязаний World Finals.

Некоторые инструменты, которые помогут вам в освоении алгоритмов

  • flow-chart.js — Иструмент, помогающий вам создавать диаграммы и схемы, которые могут моделировать алгоритмы.
  • interactive-coding-challenges — Интерактивные задачки по алгоритмам и структурам данных.

Лицензия
И в интересах авторского лева(материал свободный, и все его изменённые или дополненные формы должны оставаться свободными — прим. переводчика) вот наша лицензия:

Эта работа находится под лицензией Creative Commons Attribution 4.0 International License(ссылка).

Алгоритмы и структуры данных: развернутый видеокурс

Объясняем известные алгоритмы сортировки на пальцах

Топ-7 книг по алгоритмам на русском языке

Алгоритмы — это то, что мы делаем, чтобы не делать что-то. По сути это инструкции для выполнения скучных и повторяющихся задач. Задача, решение которой без алгоритмов может занять несколько часов, с алгоритмами решается практически мгновенно, — пишет сайт pythonist.ru.

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

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

1. Грокаем алгоритмы

Автор: Адитья Бхаргава. Год издания: 2017.

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

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

Особо стоит отметить, что книга написана очень легким языком, а сложные темы в ней объясняются на простых жизненных примерах. Кроме того, все объяснения сопровождаются тематическими иллюстрациями и графиками (их около 400) — чтобы уж точно всем все стало понятно.

2. Совершенный алгоритм. Основы

Автор: Тим Рафгарден. Год издания: 2019.

Тим Рафгарден — профессор информатики, член института Data Science при Колумбийском университете. Серия книг «Совершенный алгоритм» (англ. Algorithms Illuminated) написана им на основе онлайн-курсов, которые он ведет на платформах Coursera и edX.

Первая часть серии представляет собой доступное введение в основы алгоритмов. Объяснение не привязано к каком-либо языку программирования. В этой книге автор рассматривает асимптотический анализ алгоритмов и нотацию О-большое (а также Омега-большое и Тета-большое), парадигму «разделяй и властвуй», рандомизированные алгоритмы и, конечно, несколько самых известных алгоритмов сортировки.

В этой книге читатели также найдут упражнения на закрепление материала и разборы решений.

3. Совершенный алгоритм. Графовые алгоритмы и структуры данных

Автор: Рафгарден Тим. Год издания: 2019.

Это вторая книга серии «Совершенный алгоритм». В ней рассматриваются такие темы как графы, алгоритм кратчайшего пути Дейкстры, куча и дерево поиска, хеш-таблицы и фильтры Блума. Как и первой части, здесь к объяснениям прилагаются задачи на закрепление материала (с решениями).

4. Алгоритмы для начинающих

Автор: Луридас Панос. Год издания: 2018.

Это учебное пособие предназначено для людей, не имеющих бэкграунда в продвинутых темах математики и информатики. Упор в книге делается на задачи и жизненные примеры. Разбираемые алгоритмы представлены в виде псевдокода и легко могут быть реализованы на любом языке программирования, включая Python.

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

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

5. Введение в анализ алгоритмов

Автор: Майкл Солтис. Год издания: 2019.

Это второе, полностью обновленное и переработанное издание книги.

«Введение в анализ алгоритмов» будет отличным учебным руководством и справочником как студентов, так и для разработчиков, ориентированных на создание надежного кода. Материал в книге изложен достаточно сжато, но, тем не менее, он охватывает все необходимые основы.

В книге рассмотрены традиционные для информатики алгоритмы, такие как жадный алгоритм, динамическое программирование, «разделяй и властвуй». Но кроме того автор рассматривает два класса алгоритмов, которые часто выпадают из поля зрения, — рандомизированные и онлайн-алгоритмы (с упором на сами алгоритмы). И это очень кстати, ведь первые повсеместно применяются в криптографии, а вторые необходимы в очень многих областях, от создания ОС до прогнозирования фондового рынка.

6. Алгоритмы: разработка и применение

Авторы: Джон Клейнберг, Эва Тардос. Год издания: 2016.

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

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

В книге рассматриваются (среди прочих) такие темы как основы анализа алгоритмов, графы, жадные алгоритмы, алгоритмы «разделяй и властвуй», динамическое программирование, NP-полнота, аппроксимирующие и рандомизированные алгоритмы.

7. Алгоритмы. Руководство по разработке

Автор: Стивен С. Скиена. Год издания: 2011.

Книга, ставшая классикой. Первое издание вышло еще в 1997 году. Мы представляем вам второе издание, которое было существенно обновлено.

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

Литература по алгоритмам и структурам данных — Блог программиста

Книги по алгоритмам и структурам данных:

Дж. Макконелл Анализ алгоритмов. Активный обучающий подход. — 3-е дополненное издание. М: Техносфера, 2009. -416с.

Книга описывает базовые алгоритмы сортировки и поиска, теоретические основы (анализ алгоритмов, машины Тьюринга). Есть раздел по параллельным алгоритмам, но , как и вся остальная книга, достаточно поверхностный. Книжка хорошо подойдет школьникам и студентам начальных курсов, т.к. не требует серьезной математической подготовки. Все необходимые для понимания материала математические сведения описаны в книге очень просто и понятно.

Миллер, Р. Последовательные и параллельные алгоритмы: Общий подход / Р. Миллер, Л. Боксер ; пер. с англ. — М. : БИНОМ. Лаборатория знаний, 2006. — 406 с.

Книга Миллера полностью посвящена параллельным алгоритмам и параллельным вычислительным машинам. Рассматриваются машины с общей и распределенной памятью. Описываются фундаментальные алгоритмы (сортировка, поиск, умножение матриц, обработка изображений). Для каждого алгоритма приводятся последовательная и параллельные реализации для различных архитектур, проводится их анализ. Книга содержит большое количество математических выкладок и является весьма специфической — интересна будет студентам, интересующимся супервычислениями.

Скиена С. Алгоритмы. Руководство по разработке. 2-е изд.: Пер. с англ. — СПб.: БХВ-Петербург. 2011. — 720 с.: ил.

Скиена описывает вопросы анализа алгоритмов, структуры данных как на примерах классических задач сортировки и поиска, так и на более специфичных задачах (например, игра «Судоку»). Очень хорошо описан раздел по динамическому программированию. В книге приводится множество примеров из жизни и практики автора, поэтому читается книга не очень сложно. Материал излагается гораздо более подробно и полно, чем у Макконелла. Книга хорошо подойдет студентам и школьникам-олимпиадникам.

Т. Кормен. Алгоритмы. Построение и анализ. / Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн . – Издательство «Вильямс», 2013.

Книга написана очень подробно. Разжевывается практически все, что в ней есть. Именно из-за этого, она не понравилась нашим специалистам в области computer science — очень элементарная. При этом количество раcсмотренных алгоритмов в книге невелико. По-английски оно звучит как «Introduction to to Algorithms», т.е. «Введение», а уж никак не «построение и анализ». В книге изложены некоторые методы построения алгоритмов, например, метод динамического программирования, в принципе, «на пальцах» показано как надо подходить к оценке алгоритмической сложности. Тем не менее, это лишь «Introduction» и ничего более ожидать не стоило.

Это действительно учебник для студентов, которые обучаются по курсу «Информатики» (в смысле «Computer science»), очень подробный и неплохо написанный. Я так думаю, что тот студент, который осилит чтение этой книги, несомненно будет знать почему быстрая сортировка «в худшем случае n^2», так как именно такие вещи традиционно трудно доходят за время занятий.

Итог: не стоит ожидать от этой книги многого. В качестве учебника она, наверное, хороша, но в качестве справочника (как это рекомендуют издатели) ее использовать затруднительно. В книге много иллюстраций и упражнений.

подборка популярных книг о программировании, языках, алгоритмах / Блог компании ИТ-ГРАД / Хабр

В сегодняшнем материале мы собрали одни из наиболее популярных книг, отобранных самими разработчиками — резидентами Reddit, Quora, Stack Exchange, Stack Overflow и Hacker News.

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

/ фото Marketa CC


Об устройстве компьютера и разработке в целом


Начнем с книг, которые будут полезны тем, кто делает первые шаги в разработке или хочет «закрыть пробелы» в базовых знаниях.


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

Крэйг Роу (Craig Rowe), руководитель группы разработчиков компании Dootrix, признается, что прочитал книгу только потому, что Джоэл Спольски (Joel Spolsky), автор блога Joel on Software и один из основателей Stack Overflow, назвал её маст-ридом. Сначала Крэйг сомневался, стоит ли читать книгу, ведь она вышла в 2000 году. Но в итоге прочитал и остался доволен: книга помогла ему заполнить пробелы по темам, упущенным во время обучения, а повествование в формате последовательности исторических событий позволило сделать чтение увлекательным.


Подход к повествованию в этой книге отличается от традиционного. Он выстроена в форме диалога автора и читателя, а страницы делятся не на параграфы, а на колонки с вопросами и ответами. Пользователи Hacker News отмечают, что из-за неформального стиля книгу легко и не скучно читать. Вопросы и ответы в книге постепенно усложняются, поэтому слишком легко во время чтения точно не будет — на Stack Exchange есть даже тред с обсуждением того, как правильно ее читать.


Ещё одна книга об устройстве компьютера для читателей любого уровня. В ней доступным языком описаны общие принципы работы компьютера. Один из авторов блога WirelessMoves утверждает, что всего 30 минут с этой книгой позволили ему понять, как работает ЦПУ — блогер признает, что несмотря на опыт и теоретические знания, для него этот раздел был своего рода «белым пятном». Специфика книги поможет сделать то же самое даже тем, кто ничего не знает об электронике.

В книге есть множество практических задач, решение которых приводится далеко не всегда — некоторые видят в этом еще одно ее достоинство. В качестве дополнения к этой книге пользователи Reddit рекомендуют обратить внимание на издание The Elements of Computing Systems.


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

Популярность эта книга приобрела из-за отзыва Питера Норвига (Peter Norvig), директора по исследованиям в Google. Питер проводит аналогию с автомобилями: SICP подойдет тем, кто хочет понять, как работает автомобиль, из чего состоит, и как построить безопасную и надежную машину, но вряд ли порадует тех, кто просто хочет научиться водить.

Это не легкое чтиво, книга требует концентрации и вдумчивого изучения. Из-за ее сложности некоторые даже устраивают себе SICP-челлендж: чтобы его пройти, нужно дочитать книгу до конца. Если время вам слишком дорого, можно обратить внимание на краткую версию книги.


Об алгоритмах


Программист Филип Бьюак (Philip Buuck) утверждает, что эта книга стала самой захватывающей книгой о структурах данных из всех, что он когда-либо читал. Стивен Скиена (Steven Skiena), автор книги и профессор информатики Университета штата Нью-Йорк в Стоуни-Брук, на понятном языке объясняет читателю сложные вещи, а в конце каждой главы приводит массу упражнений.

Однако мнения резидентов Stack Overflow об этой книге разделились: кто-то уверенно рекомендует её начинающим, а кто-то советует только полистать первые 200 страниц. Кстати, Стивен Скиена в 1988 году вместе со своей командой придумал и описал концепцию, похожую на iPad, на конкурсе по разработке компьютера будущего.


Фундаментальная монография о принципах работы алгоритмов и о структурах данных от выдающегося учёного в области компьютерных наук, профессора, математика и идеолога программирования Дональда Кнута (Donald Knuth). Эту книгу читать не просто, однако по мнению резидентов Hacker News и Stack Exchange, она стоит потраченных усилий. Билл Гейтс был готов рассмотреть резюме каждого, кто осилит этот труд. У самого Гейтса на это ушло «несколько месяцев в условиях строжайшей дисциплины».


О тонкостях Linux


Эта книга поможет тем, кто только начал изучать Linux. Это не руководство и не справочник. Однако если вы стремитесь понять принципы работы дистрибутивов, сетевых подсистем или других компонентов Linux, книга расскажет вам об этом подробно и глубоко.

По словам Фила Булла (Phil Bull), исследователя в области астрофизики из NASA, проблема многих книг по Linux состоит в том, что они пытаются объять необъятное. Авторы часто мечутся между общим, но поверхностным материалом и описанием специфики конкретного дистрибутива.

Автор этой книги сумел найти баланс между данными о системе в целом и более детальной информацией. По мнению разработчика компании AppDynamics Фрэнка Клирли (Frank Cleary), книга помогла ему лучше понять, как взаимодействуют разные компоненты Linux, и применять полученные знания в работе.


По словам Дэйва (Dave C), системного администратора, разработчика и автора YouTube-канала tutoriaLinux, если вы хотите прочитать только одну книгу по системному администрированию, стоит выбрать эту. Книга станет хорошим справочником и позволит быстро найти нужную информацию благодаря удобному содержанию.

Резиденты Reddit отмечают, что она подскажет нужные инструменты и научит управлять популярными серверными дистрибутивами. Автор книги, преподаватель и инженер Эви Немет (Evi Nemeth) известна глубокими познаниями в области системного администрирования и сетевых технологий. Помимо работы в ИТ и преподавания Эви увлекалась яхтенным туризмом и ходила на своей яхте Wonderland в разные части мира. В 2013 году она вместе с командой отплыла на яхте Niña в направлении Австралии и пропала без вести где-то в пути.


По мнению 95% людей, которые оставили отзыв на Amazon, эта книга — лучший справочник по Linux. В ней рассказывается об операционных системах в целом и о Linux в частности, приводится историческая справка, примеры кода на С и 200 упражнений.

Автор книги Майкл Керриск (Michael Kerrisk) — программист и создатель проекта Linux man-pages получил широкое признание за этот объемный (1500+ страниц) труд среди Linux-разработчиков. Федерико Лючифреди (Federico Lucifredi), менеджер дистрибутивов SUSE Linux Enterprise и openSUSE, называет эту книгу энциклопедией программирования под Linux.

А Джейк Эдж (Jake Edge), Linux-разработчик и редактор LWN.net, говорит, что, несмотря на внушительный объем, книга легко читается и простыми словами объясняет большинство ключевых моментов.

/ фото Wall Boat PD


О языках программирования


Знакомиться с C++ логично, следуя советам его создателя: Бьёрна Страуструпа. Автор подробно изложил в своей книге фундаментальные особенности и эволюцию языка. Первое издание книги датируется 1986 годом. Популярность книги с тех пор только росла: ее издавали 4 раза (последний в 2013) и перевели на 20 языков.

Питер Ли (Peter Lee), глава Microsoft Research, особенно рекомендует обратить внимание на книгу тем, кто хочет освежить свои знания о С++. Кроме того, Ли отмечает хорошую подачу материала, которая позволяет быстро и эффективно найти и изучить все, что нужно. Стоит учесть физические размеры книги (если вы предпочитаете бумажную версию): томик размером в 1300 страниц читать в транспорте или между делом будет не очень удобно.

Пользователи Reddit считают, что книга стоящая и полезная, но предостерегают, что осилить её целиком довольно непросто и советуют использовать книгу в основном в качестве справочника. Дополнительно по этой ссылке можно найти подборку книг по С++ для любого уровня владения языком.


На ста пятидесяти страницах этой книги авторы сумели уместить множество достойных советов. Джон Курлак (John Kurlak) из Facebook, жалеет, что не прочел ее, когда впервые столкнулся с JavaScript, потому что объем и подача материала хорошо подходят для начинающих. По словам Джона, книга будет полезна, если вы хотите изучить шаблоны проектирования на этапе знакомства с языком. Книгу традиционно включают в списки самых популярных: 178 упоминаний на Stack Overflow и 639 на Reddit.


Эту книгу рекомендуют не только Java-разработчикам, но и тем, кто хочет разобраться в многопоточном программировании в целом. Резиденты Stack Overflow утверждают, что книга помогает освоить азы многопоточности, тем самым экономит множество часов при создании многопоточных приложений. Поскольку книга раскрывает основы, она больше подойдет для начинающих.


Питер Купер (Peter Cooper), разработчик и автор книги Beginning Ruby, прочитал эту книгу целиком всего за 24 часа. По его словам, книга затягивает манерой письма: кажется, что её написал один из ваших друзей.

В отличие от своей предыдущей книги Design Patterns in Ruby в этой автор Расс Олсен (Russ Olsen) рассматривает не конкретные шаблоны проектирования на Ruby, а стиль и сущность Ruby в целом. Разработчик и автор блога Code inComplete Джейк Гордон (Jake Gordon) рекомендует эту книгу продвинутым Ruby-программистам, которые хотят убедиться, что они на верном пути.



Этот классический учебник также иногда называют K&R по первым буквам фамилий авторов. Первый из них — Брайан Керниган (Brian Kernighan), ученый, один из разработчиков Unix, соавтор языков AWK и AMPL. Второй — Деннис Ритчи (Dennis Ritchie), физик, математик, создатель С и один из ведущих разработчиков Unix.

Резиденты Reddit отмечают, что книга может стать вашим единственным туториалом по С, потому что дает исчерпывающее представление о структуре и особенностях языка. А программист Майк Тейлор (Mike Taylor) сравнивает эту книгу с группой Beatles: она популярна и популярность её абсолютно заслуженна.


О тонкостях работы и самосовершенствовании


Пользователи всех тематических площадок рекомендуют эту книгу к прочтению. Например, в этом треде на Quora её советует почти каждый пользователь. Автор книги — Робер Сесил Мартин (Robert Cecil Martin), известный как Uncle Bob, разработчик ПО, писатель и соавтор Agile Manifesto. Эта книга упоминалась на Stack Overflow 256 раз, помогла многим людям переосмыслить свой подход к работе.

Дрю Хувер (Drew Hoover), разработчик компании Atomic Object, отмечает, что несмотря на возраст, книга содержит мысли и идеи, которые не теряют своей значимости. Некоторые, однако, ругают книгу за излишнюю категоричность — поэтому Clean Code рекомендуют опытным программистам.


Эту книгу можно встретить почти в каждой подборке материалов для разработчика. И не просто так. Её автор Стив Макконнелл (Steve McConnell), генеральный директор компании Construx Software, дважды получал награду Jolt Excellence за выдающиеся книги о разработке ПО.

Один из основателей Stack Overflow Джефф Этвуд (Jeff Atwood) отмечает, что чтение этой книги означает, что вам нравится ваша работа, вы серьезно к ней относитесь и хотите совершенствоваться. А блогер и разработчик Джейсон Роэлл (Jason Roell) считает, что независимо от опыта, среды разработки или размера проекта, эта книга будет стимулировать мышление и поможет усовершенствовать код.

Осман Ахмед Осман (Osman Ahmed Osman), ведущий инженер Quora, утверждает, что в первый день работы в Google ему выдали именно эту книгу как гайд по написанию кода, и она здорово ему помогла. Среди минусов можно отметить объём — 900 страниц быстро прочитать не получится — и постепенное устаревание некоторых принципов, упомянутых в книге.


Самая популярная книга на Stack Overflow расскажет, что делать с legacy-кодом — устаревшим кодом, который не обновляется, но используется. Илай Бендерски (Eli Bendersky) пишет, что «книга содержит приемы, такие же ужасные, как и тот код, на доработку которого они направлены». Как отмечает Илай, 400 страниц книги содержат мало «воды», и читать ее «линейно», от начала до конца, сложно и не всегда полезно. Удобнее использовать книгу как сборник рекомендаций по работе с теми или иными проблемами legacy-кода.


Эта книга описывает решение задач объектно-ориентированного программирования и предлагает 23 шаблона для создания гибких и изящных решений самостоятельно. Из-за длинного названия её иногда называют «книга банды четырёх» (book by the Gang of Four).

Резиденты Stack Exchange называют ее канонической в плане изучения шаблонов проектирования. А начать знакомство с шаблонами пользователи Stack Exchange рекомендуют с книги Head First Design Patterns: A Brain-Friendly Guide. Несмотря на неоднозначную обложку, многие отмечают, что ее легко читать, что особенно важно при знакомстве с темой.


Этой книге уже 40 лет, но её до сих пор читают, обсуждают и включают в списки любимых книг программистов. Секрет популярности прост: технологии меняются, а люди — нет. Фредерик Брукс (Frederick Brooks), автор книги и ученый в области теории вычислительных систем известен тем, что руководил разработкой OS/360 в IBM и изложил в своей книге «закон Брукса»: если проект не укладывается в сроки, то добавление рабочей силы задержит его еще больше. Книга будет полезна всем, кто управляет проектами и задумывается о продуктивной работе.


Под обложкой этой книги вы найдете расшифровки 80 часов интервью с 15 программистами, каждый из которых достиг значительных успехов в своей области (среди них уже упоминавшиеся сегодня Питер Норвиг и Дональд Кнут). Они расскажут о том, как изучали программирование, какие инструменты и языки используют в работе, как устраняют ошибки в коде, что думают о будущем программирования и др.

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


А какие книги, полезные для программистов, порекомендовали бы вы?

Расскажите об этом в комментариях!


P.S. Вот ещё пара подборок из нашего блога на Хабре:
P.P.S. И несколько материалов по теме из нашего корпоративного блога:

6 бесплатных книг по алгоритмам в программировании

Подборка книг по алгоритмам, которые следует прочесть каждому программисту. Некоторые из них станут незаменимыми помощниками.

«Руководство по разработке» – это большой справочник по разработке производительных алгоритмов. Первая часть наполнена полезными советами: автор рассказывает о базовых понятиях, анализирует алгоритмы, структуры данных, дает представление об основных типах алгоритмов.

Во второй части собран перечень литературы и сборник из популярных алгоритмических задач, их программные реализации. «Руководство» будет полезно как настольная книга для программистов и как справочное пособие для студентов IT-специальностей.

Генри Уоррен – заядлый программист и старый сотрудник IBM. В этом пособии он делится с читателем собственными приемами по работе с алгоритмами. Он рассказывает, как работать с отдельными участками памяти, а материал и примеры подкреплены математическими формулировками.

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

Роберт Седжвик – известный прогаммист. Кроме того, он руководит Adobe Systems и занимается исследованиями в IRIA, IDA и Xerox. В этом пособии автор делится собственными исследованиями фундаментальных алгоритмов и классических доктрин. В книге содержится множество моделей алгоритмов на C++, теория и практические задания.

Продолжение «Фундаментальных алгоритмов» от Роберта Седжвика. Эта книга подробно рассказывает о фундаментальных алгоритмах на графах. В книге вас ждет большое количество математических концепций, реализованных в виде кода. Особое внимание в этой части уделяется теории графов.

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

Классические алгоритмы и структуры данных на JavaScript / Хабр

Привет Всем! Я недавно запустил на GitHub проект JavaScript Algorithms and Data Structures, который содержит примеры классических алгоритмов и структур данных написанных на JavaScript с объяснениями, примерами и ссылками для дальнейшего изучения (в частности на соответствующие YouTube видео).

Основная задача проекта — помочь программистам в изучении и применении алгоритмов и сделать это на JavaScript-е.


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

Так же в корневом README вы найдете справочную информацию, которая может пригодиться при изучении. Например:

  • Графики Big O нотации (чтобы визуально быстро уловить разницу между O(n!) и O(n^2))
  • Список с конкретными значениями Big O (чтобы понимать насколько большое или маленькое значение у 10! (а оно у него аж 3628800))
  • Сложность выполнения базовых операций для структур данных (чтобы понять у каких структур быстрое чтение, а у каких поиск или удаление)
  • Сравнительная таблица сложности алгоритмов сортировки (чтобы понять какой способ сортировки выбрать и в каком случае, стабильная ли сортировка или нет)

Весь код на 100% покрыт unit-тестами. Это сделано не только для того, чтобы сохранять код в работоспособном состоянии, но так же и для того, чтобы проиллюстрировать методы и случаи употребления данного конкретного алгоритма или структуры данных (что делать, например, если граф направленный в одном из алгоритмов).

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

На данный момент в репозитории реализованы следующие структуры данных:

  • Linked List
  • Queue
  • Stack
  • Hash Table
  • Heap
  • Priority Queue
  • Trie
  • Tree (Binary Search Tree, AVL Tree)
  • Graph (both directed and undirected)
  • Disjoint Set

Дополнительно так же реализованы более 50 популярных алгоритмов. Среди которых есть алгоритмы сортировки, поиска, алгоритмы связанные с графами, деревьями, множествами, строками и математическими выкладками. Алгоритмы разделены на следующие группы:

  • Brute Force Algorithms (перебор всех возможных комбинаций и выбор правильного решения)
  • Greedy Algorithms (выбор оптимального решения на каждом текущем шаге)
  • Divide and Conquer Algorithms (разделение проблемы на меньшие части и решение этих частей проблемы по-отдельности)
  • Dynamic Programming Algorithms (построение решения на основании вычисленных ранее на предыдущих шагах данных)
  • Backtracking Algorithms (перебор всех комбинаций (как и в Brute Force) с постоянной проверкой того, удовлетворяет ли текущее решение установленным ограничениям или нет, иначе — возврат на шаг назад)

Репозиторий JavaScript Algorithms and Data Structures находится в активной разработке. Это значит, что там будут появляться новые имплементации алгоритмов и структур данных. Тем не менее, надеюсь уже сейчас этот репозиторий может быть вам полезен. Легкого кодинга!

Книги по алгоритмам и структурам данных

Достижения в эволюционных алгоритмах
Витольд Косински, 2008 г., 284 страницы, 40 МБ, PDF

Успехи в генетическом программировании, Vol. 3
под редакцией L. Spector, W.B. Лэнгдон, У. О’Рейли, П.Дж. Анджелина, 1999, PDF

Алгоритмическая алгебра
Бхубанешвара Мишры, 1993, 425 страниц, 2,3 МБ, PDF

Алгоритмическая теория графов
Дэвид Джойнер, Мин Ван Нгуен, Натанн Коэн, 2010 г., 105 страниц, 760 КБ, PDF

Алгоритмическая теория информации
Грегори.Ю. Чайтин, 2003 г., 236 стр., 0.9МБ, PDF

Алгоритмическая математика
Леонарда Сойчера, Франко Вивальди, 2004 г., 94 страницы, 0,5 МБ, PDF / PS

Алгоритмическая теория чисел
Дж. П. Бюлера, П. Стивенхагена, 2008 г., 662 страницы, PDF

Алгоритмы
Роберт Седжвик, Кевин Уэйн, 2011

Алгоритмы и структуры данных
Никлаус Вирт, 1985, 179 страниц, 1,2 МБ, PDF

Алгоритмы и структуры данных для внешней памяти
Джеффри Скотт Виттер, 2008, 191 страница, 1.1 МБ, PDF

Алгоритмы и структуры данных: базовый набор инструментов
К. Мельхорн, П. Сандерс, 2008, PDF

Алгоритмы и структуры данных: с приложениями к графике и геометрии
Юрг Нивергельт, Клаус Хинрихс, 2011 г., 299 стр., 3,3 МБ, PDF

Алгоритмы кластеризации данных
Анил К. Джайн, Ричард К. Дубс, 1988 г., 334 страницы, 39 МБ, PDF

Алгоритмы для модульных эллиптических кривых
Дж. Э. Кремона, 1992, 351 страница, PDF

Алгоритмы обучения с подкреплением
Чаба Сепесвари, 2009, 98 стр., 1.6 МБ, PDF

Алгоритмы: основные методы
Макнейл Шонле, Мэтью Уилсон, Мартин Крищик, 2006 г., 68 страниц, 1,2 МБ, PDF

Теоремы и алгоритмы художественной галереи
Джозефа О’Рурка, 1987, 296 страниц, 11 МБ, PDF

Анализ среднего случая алгоритмов на последовательностях
Войцехом Шпанковским, 2000, PS

Поведение алгоритмов
Дэниел Спилман, 2002, PDF

Категории, типы и структуры
Андреа Асперти, Джузеппе Лонго, 1991, 300 страниц, PDF

Умные алгоритмы: вдохновленные природой рецепты программирования
Джейсона Браунли, 2011

Комбинаторные алгоритмы
Альберта Нийенхейса, Герберта С.Уилф, 1978, 316 стр., 5.5 МБ, PDF

Комбинаторные алгоритмы
Джеффа Эриксона, 2003 г., 197 страниц, 1,9 МБ, PDF

Коммуникационная сложность (для разработчиков алгоритмов)
Тим Рафгарден, 2015, 150 стр., 2,8 МБ, PDF

Вычислительная и алгоритмическая линейная алгебра и n-мерная геометрия
Катта Г. Мурти, 2001, 554 страницы, PDF

Computational Geometry: Methods and Applications
by Jianer Chen, 1996, 227 страниц, 1,3 МБ, PDF

Компьютерная арифметика геометрических фигур: алгоритмы и аппаратное обеспечение
Соломона И.Хмельник, 2013, 150 с., 890КБ, PDF

Структуры данных
, Дэйв Маунт, 2001, 123 страницы, 730 КБ, PDF

Структуры данных и анализ алгоритмов
Клиффорд А. Шаффер, 2012 г., 613 стр., 2,6 МБ, PDF

Структуры данных и алгоритмы
Кэтрин Люнг, 2017 г., 126 стр., Несколько форматов

Структуры данных и алгоритмы
Джона Морриса, 1998

Разработка и анализ компьютерных алгоритмов
Дэвид М. Маунт, 2003 г., 135 страниц, 0,8 МБ, PDF

Дизайн аппроксимационных алгоритмов
Д.П. Уильямсон, Д. Б. Шмойс, 2010 г., 496 стр., 2.3 МБ, PDF

Эффективные алгоритмы сортировки и синхронизации
Эндрю Триджелл, 1999, 115 страниц, 410 КБ, PDF

Элементарные алгоритмы
Ларри ЛИУ Синью, 2016 г., 622 стр., 5,8 МБ, PDF

Основы метаэвристики
Шона Люка, 2009 г., 233 страницы, 5,3 МБ, PDF

Эволюционные алгоритмы
под редакцией Эйсуке Кита, 2011 г., 584 страницы, 30 МБ, PDF

Evolved to Win
Моше Сиппер, 2011, 193 стр., 1.9 МБ, PDF

От алгоритмов к Z-оценкам: вероятностное и статистическое моделирование в компьютерных науках
Норм Матлофф, 2013 г., 486 стр., 3,4 МБ, PDF

Фундаментальные структуры данных
Википедия, 2011 г., 411 стр., Несколько форматов

Генетические алгоритмы и эволюционные вычисления
Адам Марчик, 2004

Генетическое программирование: новые подходы и успешные приложения
под редакцией Себастьяна Вентура, 2012 г., 284 стр., 6,5 МБ, PDF

Жадные алгоритмы
Витольда Беднорца, 2008 г., 586 страниц, 47 МБ, PDF

Введение в алгоритмы
, Эрик Демейн, Шринивас Девадас, Рональд Ривест, 2008, PDF

Введение в анализ проектирования алгоритмов
К.Рагхава Рао, 2013, 142 стр., 4.4MB, PDF

Проблемы с рюкзаком: алгоритмы и компьютерные реализации
Сильвано Мартелло, Паоло Тот, 1990, 308 страниц, 23 МБ, PDF

Лекционные заметки по алгоритмам ведра
Люка Девроя, 1986, 142 страницы, 4 МБ, PDF

LEDA: платформа для комбинаторных и геометрических вычислений
, К. Мельхорн, Санкт-Нахер, 1999, 1034 стр., Несколько файлов PS

Математика для алгоритмов и системного анализа
Эдвард А. Бендер, С.Гилл Уильямсон, 2005 г., 256 стр., PDF

Современная компьютерная арифметика
Ричарда П. Брента, Пола Циммерманна, 2009 г., 239 страниц, 1,9 МБ, PDF

Заметки о структурах данных и методах программирования
Джеймса Аспнеса, 2015 г., 530 стр., 1,8 МБ, PDF

Структуры открытых данных: введение
Пэт Морин, 2013 г., 336 стр., Несколько форматов

Оптимизационные алгоритмы на матричных многообразиях
П.-А. Абсил, Р. Махони, Р. Сепулчер, 2007 г., 240 страниц, PDF

Алгоритмы планирования
Стивена М.ЛаВаль, 2006 г., 842 стр., 13,2 МБ, PDF

Решение проблем с помощью алгоритмов и структур данных с использованием Python
Брэд Миллер, Дэвид Ранум, 2011 г.

Задачи по алгоритмам, 2-е издание
Иэна Парберри, Уильяма Гасарча, 2002 г., 268 страниц, 2,4 МБ, PDF

Чисто функциональные структуры данных
Крис Окасаки, 1996 г., 162 стр., 620 КБ, PDF

Квантовые алгоритмы
Мишель Моска, 2008, 71 страница, PDF / PS

Квантовые алгоритмы для алгебраических задач
Эндрю М.Чайлдс, Вим ван Дам, 2008 г., 52 страницы, PDF / PS

Рандомизированные алгоритмы
Вольфганга Меркла, 2001 г., 46 стр., 370 КБ, PDF

Поисковые алгоритмы и приложения
под редакцией Нашата Мансура, 2011 г., 494 страницы, 18 МБ, PDF

Последовательные и параллельные алгоритмы сортировки
Х. В. Ланг, 2000

Алгоритмы сортировки и поиска: Поваренная книга
Томаса Ниманна, 2008 г., 36 страниц, 150 КБ, PDF

Think Data Structures
, Аллен Б. Дауни, 2016 г., 187 стр., 780 КБ, PDF

Темы теоретической информатики: инструментарий алгоритмиста
Джонатан Кельнер, 2009, PDF

.

100+ курсов по алгоритмам и структурам данных [2020] | Учиться онлайн бесплатно

Лучшие онлайн-курсы за все время (издание 2020 г.)

Посмотреть

Закрыть



Класс Центральный

Курсы

Субъектов
  • Компьютерная наука

  • Здоровье и медицина

  • Математика

  • Бизнес

  • Гуманитарные науки

  • Инженерное дело

  • Наука

  • Образование и обучение

  • Социальные науки

  • Художественный дизайн

  • Data Science

  • Программирование

  • Личное развитие

  • Все предметы

Просмотреть все предметы

Ежемесячные отчеты о курсе
  • Начиная с этого месяца

  • Новые онлайн-курсы

  • Самостоятельный темп

  • Самый популярный

Курсы от

900+ университетов

Меню

  • Компьютерная наука

    Компьютерная наука

    • Искуственный интеллект

    • Алгоритмы и структуры данных

    • Интернет вещей

    • Информационные технологии

    • Кибер-безопасности

    • Компьютерная сеть

    • Машинное обучение

    • DevOps

    • Глубокое обучение

    • Блокчейн и криптовалюта

    • Квантовые вычисления

    • Посмотреть все компьютерные науки

  • Здоровье и медицина

    Здоровье и медицина

    • Питание и благополучие

    • Болезни и расстройства

    • Здравоохранение

    • Здравоохранение

    • Уход

    • Анатомия

    • Ветеринарная наука

    • Посмотреть все Здоровье и медицина

  • Математика

    Математика

    • Статистика и вероятность

    • Основы математики

    • Исчисление

    • Алгебра и геометрия

    • Посмотреть всю математику

  • Бизнес

    Бизнес

    • Менеджмент и лидерство

    • Финансы

    • Предпринимательство

    • Развитие бизнеса

    • Маркетинг

    • Стратегический менеджмент

    • Специфическая отрасль

    • Бизнес-аналитика

    • Бухгалтерский учет

    • Отдел кадров

    • Управление проектом

    • Продажи

    • Дизайн-мышление

    • Реклама

    • Программное обеспечение для бизнеса

    • Посмотреть все Бизнес

  • Гуманитарные науки

    Гуманитарные науки

    • История

    • Литература

    • Иностранный язык

    • Грамматика и письмо

    • Философия

    • Религия

    • ESL

    • Культура

    • Виды спорта

    • Журналистика

    • Этика

    • Лингвистика

    • Просмотреть все гуманитарные науки

  • Инженерное дело

    Инженерное дело

    • Электротехника

    • Механическая инженерия

    • Гражданское строительство

    • Робототехника

    • Нанотехнологии

    • ГИС

    • Текстиль

    • Производство

    • BIM

    • CAD

    • Химическая инженерия

    • Посмотреть все разработки

  • Наука

    Наука

    • Химия

    • Физика

    • Наука об окружающей среде

    • Астрономия

    • Биология

    • Квантовая механика

    • сельское хозяйство

    • Термодинамика

    • Материаловедение

    • Просмотреть все науки

  • Образование и обучение

    Образование и обучение

    • K12

    • Высшее образование

    • STEM

    • Повышение квалификации учителей

    • Развитие курса

    • Онлайн-образование

    • Подготовка к тесту

    • Просмотреть все Образование и обучение

  • Социальные науки

    Социальные науки

    • Социология

    • Экономика

    • Психология

    • Антропология

    • Политическая наука

    • Закон

    • Городское планирование

    • Права человека

    • Устойчивость

    • Публичная политика

    • Просмотреть все социальные науки

  • Художественный дизайн

    Художественный дизайн

    • Музыка

    • Кино и театр

    • Цифровых средств массовой информации

    • Изобразительное искусство

    • Дизайн и творчество

    • Посмотреть все Искусство и дизайн

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *