Ещё 4 способа побольше узнать об алгоритмах
Подавляющее большинство кандидатов на позицию разработчика в Яндексе проходят проверку на знание алгоритмов. Не так давно мы уже предлагали вам список материалов по алгоритмам и структурам данных. Вот ещё четыре рекомендации, на этот раз, от лектора Школы разработки интерфейсов Артёма Вурсалова.
Книга Томаса Кормена «Алгоритмы: построение и анализ»
Базовый учебник по алгоритмам. В нём рассматриваются основные алгоритмы и структуры данных: от сортировок, бинарных деревьев и многопоточных алгоритмов до линейного программирования, криптографии и теории чисел. Большое внимание автор уделяет оценке времени работы алгоритма и тому, как скорость его работы зависит от объёма данных. В отличие от классических трудов Кнута, эта книга написана более простым языком, к тому же дополнена псевдокодом, который будет понятен всем, кто хотя бы минимально знаком с программированием. Разобравшись в алгоритме, вы сможете его реализовать на любом языке. Главы книги самостоятельны, каждая из них — отдельная тема, плюс даются ссылки для углубленного изучения.
Курс «Алгоритмы» на KhanAcademy
После знакомства с основами обратите внимание на курс профессоров Дармутского университета. Он охватывает множество популярных алгоритмов, включая различные варианты поиска и теорию графов. Один из модулей курса посвящён О-большому — оценке сложности алгоритмов и асимптотическому анализу. Вы узнаете, как их применять для написания наиболее эффективного кода. Примечательно то, что курс бесплатный, а новый блок материалов откроется только после того, как вы полностью освоите предыдущий. Кстати, один из авторов — тот же Томас Кормен.
VisuAlgo
Проект по визуализации алгоритмов, придуманный профессором Национального университет Сингапура Стивеном Халимом вместе со студентами. Для некоторых современных алгоритмов визуализация есть только на этом сайте. Например, для обхода графа, поиска в глубину (DFS) и в ширину (BFS). В разделе training можно проверить свои знания: выберите интересные вам темы и попробуйте ответить на вопросы, предложенные системой. Автоматизирована и генерация вопросов (они всегда разные), и оценка ответов — вы сразу узнаете свой результат.
Алгоритмические задачи на Codeforces
Наконец, не забывайте практиковаться на реальных данных IT-компаний — порешайте алгоритмические задачки на популярных соревновательных платформах. Codeforces хорош тем, что ориентирован на разные уровни участников: новички соревнуются с новичками, а профи с профи. Кроме крупных соревнований на сайте проводятся так называемые «раунды» — участникам дают пять задач и два часа на их решение. Это отличный вариант, когда нужно быстро перестроить мышление под практику или, например, встряхнуться, чтобы подогреть интерес к работе.