Попросили инженеров YADRO поделиться избранными материалами про алгоритмы и структуры данных для «плюсовиков». Вспомнили и «классику» вроде книги Никлауса Вирта, и более современные источники, а также рассказали, почему стоит посвятить им время.
Статьи, лекции и курсы из подборки помогут опытным специалистам «вспомнить все» перед собеседованием или погрузиться в тему алгоритмов, если вы пока в ней не сильны.
Дисклеймер: некоторые ссылки открываются только с VPN.
![](https://habrastorage.org/getpro/habr/upload_files/14e/b26/ff0/14eb26ff027ed1a70d336d4b7f962aa8.png)
Кирилл Колодяжный
Ведущий инженер по разработке ПО в отделе оптимизации производительности СХД
Что рекомендует: Курс Algorithms от Стэнфордского университета
Почему стоит смотреть: На мой взгляд, автор курса Тим Роугарден — отличный лектор. В Algorithms он буквально на пальцах объясняет базовую теорию и дает практические задания, которые проверяются на платформе Coursera автоматически. На внутреннем форуме можно обсудить решения и ошибки с другими студентами или кураторами курса.
Новый поток стартовал 15 августа, поэтому вы еще успеваете присоединиться. Курс займет 2 месяца, если уделять учебе 10 часов в неделю.
![](https://habrastorage.org/getpro/habr/upload_files/59c/45f/714/59c45f7147159fe4d3a229cfe0d1cc72.png)
Анонимный инженер
Разработчик на С++ в YADRO
Что рекомендует: Лекции Павла Маврина
Почему стоит смотреть: Автор лекций преподает курс по алгоритмам и структурам данных в ИТМО. А еще он чемпион мира ACM ICPC 2004 и занимает высокие места в соревнованиях по спортивному программированию типа TopCoder и Google Code Jam, что говорит о его высокой компетенции в этой сфере. Я слушал его лекции во время учебы в ИТМО. Из личного опыта: после курсов Павла я наконец-то начал понимать, как работают алгоритмы на графах. В лекциях, как правило, используется псевдокод, но я не считаю это проблемой. Главное — понимать принципы работы алгоритмов, а умение реализовать их на определенном языке программирования вторично.
![](https://habrastorage.org/getpro/habr/upload_files/507/1c9/afd/5071c9afd8ec11ffb0e3eb1d5da44162.jpg)
Илья Казаков
Старший инженер по разработке ПО в группе разработки эмуляторов дисковой подсистемы
Что рекомендует: Выступление Романа Панова на C++ Russia «Дерево смещений: работаем с динамически изменяемыми сегментированными массивами»
Пока доступно только тем, у кого есть билет, но скоро все видео выложат на каналы конференции.
Почему стоит смотреть: В прошлом веке Николаус Вирт написал книгу с говорящим названием «Алгоритмы + Структуры данных = Программы». Кажется, что данное утверждение сохраняет истинность и сегодня.
Когда я пишу на С++, меня увлекают вещи вроде системного или библиотечного интерфейса, времени исполнения программы, асинхронности, многопоточности и синхронизации. В этих бесчисленных аспектах теряется фокус на том, какие структуры данных и алгоритмы я использую.
Если сравнивать с другими языками, стандартная библиотека С++ достаточно скудна относительно структур данных, которые она предоставляет. Хочешь использовать структуру данных, которой нет в стандартной библиотеке, — приходится обращаться за помощью к сторонним библиотекам или писать свою реализацию. А результат редко оправдывает усилия. Но каждый раз, когда возникает потребность в собственной реализации структуры данных, более того, когда задача требует ad hoc-структуры данных, становится невероятно интересно. Как раз под этот случай и попадает дерево смещений.
Елена Степанова, старший инженер: «Я училась программировать по книге «Алгоритмы + Структуры данных = Программы» Никлауса Вирта 20 лет назад, но информация в ней до сих пор актуальна — базовые принципы не изменились».
![](https://habrastorage.org/getpro/habr/upload_files/3d5/3ee/97c/3d53ee97cfad65f413a9478fc568da58.jpg)
Константин Владимиров
Руководитель отдела инструментов разработки и компиляторов
Что рекомендует: «Алгоритмы. Построение и анализ», Томас Кормен, Чарльз Эрик Лейзерсон, Рональд Линн Ривест, Клиффорд Штайн
Почему стоит читать: На вводном уровне Кормен — это непреходящая классика, даже лучшем, чем Вирт. В книге рассматривают множество алгоритмов и задач, как очень простых, чтобы не выпадать из материала, так и сложных, уровня исследовательских проектов. Работа «Алгоритмы. Построение и анализ» — хорошая ступенька к более серьезной литературе, например, «Искусству программирования» Кнута. Кроме того, у Кормена простой и понятный псевдокод, что позволяет одновременно изучать алгоритмы и прокачиваться в реализации на вашем любимом языке.
Что еще советуют разработчики на С++:
-
Курс Algorithms от Стэнфордского Университета
-
Сборник из 145 алгоритмов для самостоятельной практики
-
Книга «Диалекты Basic для ZX Spectrum» под редакцией Родионова Н. Ю., Ларченко А. А.
-
Выступление Джонатана Боккара на CppCon 2018 «105 STL algorithms in less than an hour»
Какими материалами об алгоритмах на С++ вы бы дополнили подборку? Пишите в комментариях.
ссылка на оригинал статьи https://habr.com/ru/articles/836106/
Добавить комментарий