Начал погружаться в тему алгоритмов, которая с вероятностью будет использоваться для проверки hard skill на собеседовании, и понял, что тону в объёме информации. Но посидел и вроде разобрался.
Алгоритмы составляют суть программирования, не сводящийся ни к конкретным языкам или системам. Это как философия, наука наук, но в чистом виде мало где используется. Алгоритмы в реальных задачах, если используются 1 раз в год, то это праздник.
Алгоритмы тоже стоят на перекрёстке математики и программирования. Каждый из них нужно доказывать как теорему.
Вся информация, которую я нашёл, делиться на 4 группы:
- статьи
- книги
- видео
- курсы
Статьи я читаю сейчас, и это скорее как быстрее подготовиться к собеседованию, чем про конкретные алгоритмы.
Книги делятся на 3 группы: для хомячков, середнячков и монстров.
Для хомячков, т. е. начинающих программистов.
- Грокаем алгоритмы :: Бхаргава Адитья
- Алгоритмы для начинающих. Теория и практика для разработчика :: Луридас Панос
- Computer Science для программиста-самоучки. Всё, что нужно знать о структурах данных и алгоритмах :: Альтхофф Кори
Здесь всё просто, объяснена каждая строчка программы, самые зубодробительные алгоритмы не рассмотрены вообще. Этот уровень я уже перерос.
Для середнячков
- Алгоритмы. Руководство по разработке. 3-е изд. :: Скиена Стивен С.
- Карьера программиста :: Лакман Макдауэлл Г.
Это уже намного глубже, чем для хомячков, но уровень зубодробительной математики ещё не пройден, математика для средней школы.
Для монстров
- Алгоритмы: построение и анализ. 3-е издание :: Томас Кормен
- Тим Рафгарден, серия «Совершенный алгоритм»
Здесь раскрыта вся глубина глубин. Кормен особенно отличился, в его книге даже есть математический раздел, который используется при доказательстве алгоритмов как теорем.
Я себе заказал на «Озоне» Скиена Стивен С. «Алгоритмы. Руководство по разработке.», до уровня монстра мне ещё далеко. Книгу я скачал на торренте, и это скорее справочник. Нужны, например, алгоритмы на красно-чёрных деревьях или радикс-сортировка, взял и прочитал. Самое интересное, автор рассказывает, где конкретный алгоритм можно использовать в реальной жизни. А «Карьеру программиста» я уже купил, но так ещё и не прочитал.
Видео.
Тинькофф и Яндекс проводят лекции для школьников и студентов. Где тему алгоритмов спалили всю.
Алгоритмы и структуры данных для студентов https://www.youtube.com/playlist?list=PLjCCarnDJNstA0eVkyXWZiLk8nz2b3OjG
Тренировки по алгоритмам 6.0 https://www.youtube.com/playlist?list=PLXtiZNKIobF5wb5euWUzEGkvg--bhC668
Есть ещё уйма ютуберов
Влад Тен https://www.youtube.com/playlist?list=PLCKD2XyZJi6tlvGZhwCdXsXbZ3h3ZWrCR
Alek OS https://www.youtube.com/playlist?list=PLIJLLSrXDPogL-Db1f9IvHp2fiMwX18yz
Data Structures and Algorithms https://www.youtube.com/playlist?list=PLWKjhJtqVAbkso-IbgiiP48n-O-JQA9PJ
А также уйма курсов бесплатных и платных.
Для себя я отобрал «Подготовка к алгоритмическому собеседованию» https://start.practicum.yandex/algorithms-interview/
Алгоритмы и структуры данных https://ru.hexlet.io/programs/algorithms
Я просто уже давно занимался у Хекслета, и полную муру за сотню тысяч они давать не будут. Но у этого курса нет наставника. Наставник за отдельную плату.
«Основы алгоритмов» от Яндекса https://education.yandex.ru/handbook/algorithms
Особенно добил курс от Яндекса «Алгоритмы и структуры данных» https://practicum.yandex.ru/algorithms/ за 74 тыс. руб. Что они могут дать, что они не рассказали школьникам и студентам, я даже не представляю, только ментора. Как по мне, так дороговато.
Хочется закончить цитатой: «Наши цели ясны, задачи определены. За работу, товарищи!»