Files
2026-01-20 15:08:42 +08:00

7.1 KiB
Raw Permalink Blame History

comments, icon
comments icon
true material/rocket-launch-outline

Введение

Несколько лет назад я поделился на LeetCode серией решений задач "剑指 Offer", что получило много поддержки и одобрения от читателей. В процессе общения с читателями самым частым вопросом был "как начать изучать алгоритмы". Постепенно я заинтересовался этим вопросом.

Слепое решение задач кажется самым популярным методом — простым, прямым и эффективным. Однако решение задач похоже на игру в "сапёра": люди с сильными способностями к самообучению могут успешно обезвредить все мины одну за другой, в то время как те, у кого недостаточно базовых знаний, могут получить множество ударов и отступить под натиском неудач. Чтение учебников также является распространённой практикой, но для тех, кто ищет работу, дипломная работа, рассылка резюме, подготовка к письменным и устным экзаменам уже отнимают большую часть энергии, и изучение толстых книг часто становится сложной задачей.

Если вы также сталкиваетесь с подобными трудностями, то вам повезло, что эта книга "нашла" вас. Эта книга — мой ответ на этот вопрос, и даже если это не оптимальное решение, то, по крайней мере, это активная попытка. Хотя эта книга не поможет вам сразу получить оффер, она поможет вам исследовать "карту знаний" структур данных и алгоритмов, познакомит вас с формой, размером и расположением различных "мин", научит вас различным "методам разминирования". Обладая этими навыками, я верю, что вы сможете более уверенно решать задачи и читать литературу, постепенно выстраивая полную систему знаний.

Я полностью согласен со словами профессора Фейнмана: "Knowledge isn't free. You have to pay attention." В этом смысле эта книга не совсем "бесплатна". Чтобы не подвести ваше драгоценное "внимание", уделённое этой книге, я приложу все усилия и максимум "внимания" для создания этой книги.

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

Hello Алгоритмы{ class="cover-image" }

Hello, Алгоритмы!

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

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

Точно так же структуры данных повсюду: от больших социальных сетей до малых линий метро — многие системы можно смоделировать как "граф"; от большой страны до маленькой семьи — основные организационные формы общества демонстрируют характеристики "дерева"; зимняя одежда похожа на "стек" — то, что надели первым, снимаем последним; тубус для бадминтона подобен "очереди" — с одного конца кладём, с другого достаём; словарь похож на "хеш-таблицу", позволяющую быстро найти нужное слово.

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