This commit is contained in:
krahets
2026-04-14 18:06:19 +08:00
parent 17b2a0b630
commit cf0747ba3e
131 changed files with 604 additions and 609 deletions
+8 -8
View File
@@ -4432,8 +4432,8 @@
<li>Главы, помеченные <code>*</code> в заголовке, являются дополнительными и содержат более сложный материал. Если времени мало, их можно пропустить.</li>
<li>Профессиональные термины выделяются полужирным шрифтом в печатной и PDF-версии или подчеркиванием в веб-версии, например <u>массив (array)</u>. Рекомендуется запоминать их для удобства чтения литературы.</li>
<li>Важные моменты и обобщающие фразы будут <strong>выделяться полужирным шрифтом</strong>, и на такие тексты следует обращать особое внимание.</li>
<li>Слова и выражения со специальным смыслом будут отмечаться "кавычками", чтобы избежать неоднозначности.</li>
<li>Когда термины различаются между языками программирования, в качестве стандарта используется Python; например, <code>None</code> применяется для обозначения "пустого" значения.</li>
<li>Слова и выражения со специальным смыслом будут отмечаться «кавычками», чтобы избежать неоднозначности.</li>
<li>Когда термины различаются между языками программирования, в качестве стандарта используется Python. Например, <code>None</code> применяется для обозначения «пустого» значения.</li>
<li>В некоторых местах книга отходит от стандартов комментирования программного кода ради более компактного оформления. Комментарии в основном делятся на три типа: заголовочные, содержательные и многострочные.</li>
</ul>
<div class="tabbed-set tabbed-alternate" data-tabs="1:13"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><input id="__tabbed_1_10" name="__tabbed_1" type="radio" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><input id="__tabbed_1_12" name="__tabbed_1" type="radio" /><input id="__tabbed_1_13" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Python</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Java</label><label for="__tabbed_1_4">C#</label><label for="__tabbed_1_5">Go</label><label for="__tabbed_1_6">Swift</label><label for="__tabbed_1_7">JS</label><label for="__tabbed_1_8">TS</label><label for="__tabbed_1_9">Dart</label><label for="__tabbed_1_10">Rust</label><label for="__tabbed_1_11">C</label><label for="__tabbed_1_12">Kotlin</label><label for="__tabbed_1_13">Ruby</label></div>
@@ -4586,7 +4586,7 @@
<p align="center"> Рисунок 0-2 &nbsp; Пример анимированной иллюстрации </p>
<h2 id="023">0.2.3 &nbsp; Углубление понимания через практику кода<a class="headerlink" href="#023" title="Permanent link">&para;</a></h2>
<p>Сопроводительный код этой книги размещен в <a href="https://github.com/krahets/hello-algo">репозитории GitHub</a>. Как показано ниже, <strong>исходный код содержит тестовые примеры и может быть запущен одним нажатием кнопки</strong>.</p>
<p>Сопроводительный код этой книги размещен в <a href="https://github.com/krahets/hello-algo">репозитории GitHub</a>. Как показано на рисунке 0-3, <strong>исходный код содержит тестовые примеры и может быть запущен одним нажатием кнопки</strong>.</p>
<p>Если позволяет время, <strong>рекомендуется самостоятельно набирать код</strong>. Если времени на обучение мало, по крайней мере <strong>просмотрите и выполните весь код</strong>.</p>
<p>Процесс написания кода приносит больше пользы, чем его чтение. <strong>Настоящее обучение - это обучение на практике</strong>.</p>
<p><img alt="Пример запуска кода" class="animation-figure" src="../../index.assets/running_code.gif" /></p>
@@ -4597,7 +4597,7 @@
<p><strong>Шаг 2: клонирование или загрузка репозитория кода</strong>. Перейдите в <a href="https://github.com/krahets/hello-algo">репозиторий GitHub</a>. Если у вас уже установлен <a href="https://git-scm.com/downloads">Git</a>, репозиторий можно клонировать следующей командой:</p>
<div class="highlight"><pre><span></span><code><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/krahets/hello-algo.git
</code></pre></div>
<p>Также можно нажать кнопку "Download ZIP" в месте, показанном на рисунке 0-4, напрямую скачать архив с кодом и затем распаковать его локально.</p>
<p>Также можно нажать кнопку «Download ZIP» в месте, показанном на рисунке 0-4, напрямую скачать архив с кодом и затем распаковать его локально.</p>
<p><img alt="Клонирование репозитория и загрузка кода" class="animation-figure" src="../suggestions.assets/download_code.png" /></p>
<p align="center"> Рисунок 0-4 &nbsp; Клонирование репозитория и загрузка кода </p>
@@ -4605,7 +4605,7 @@
<p><img alt="Блоки кода и соответствующие исходные файлы" class="animation-figure" src="../suggestions.assets/code_md_to_repo.png" /></p>
<p align="center"> Рисунок 0-5 &nbsp; Блоки кода и соответствующие исходные файлы </p>
<p>Помимо локального запуска, <strong>веб-версия также поддерживает визуальное выполнение Python-кода</strong> (на базе <a href="https://pythontutor.com/">pythontutor</a>). Как показано ниже, можно нажать "Визуализировать выполнение" под блоком кода, чтобы раскрыть окно и наблюдать за выполнением алгоритма; также можно нажать "Полноэкранный режим" для более удобного просмотра.</p>
<p>Помимо локального запуска, <strong>веб-версия также поддерживает визуальное выполнение Python-кода</strong> (на базе <a href="https://pythontutor.com/">pythontutor</a>). Как показано на рисунке 0-6, можно нажать «Визуализировать выполнение» под блоком кода, чтобы раскрыть окно и наблюдать за выполнением алгоритма. Также можно нажать «Полноэкранный режим» для более удобного просмотра.</p>
<p><img alt="Визуальный запуск Python-кода" class="animation-figure" src="../suggestions.assets/pythontutor_example.png" /></p>
<p align="center"> Рисунок 0-6 &nbsp; Визуальный запуск Python-кода </p>
@@ -4619,10 +4619,10 @@
<p>В целом процесс изучения структур данных и алгоритмов можно разделить на три этапа.</p>
<ol>
<li><strong>Этап 1: введение в алгоритмы</strong>. Необходимо познакомиться с особенностями и применением различных структур данных, изучить принципы, процессы, назначение и эффективность различных алгоритмов.</li>
<li><strong>Этап 2: решение алгоритмических задач</strong>. Рекомендуется начинать с популярных задач и решить не менее 100 из них, чтобы познакомиться с основными алгоритмическими проблемами. При первых попытках "забывание знаний" может стать испытанием, но это нормально. Следуйте при повторении задач "кривой забывания Эббингауза", и обычно после 3-5 циклов повторения материал хорошо запоминается. Рекомендуемые списки задач и планы практики см. в этом <a href="https://github.com/krahets/LeetCode-Book">репозитории GitHub</a>.</li>
<li><strong>Этап 3: построение системы знаний</strong>. В процессе обучения можно читать статьи по алгоритмам, изучать каркасы решений и учебники, чтобы постоянно обогащать свою систему знаний. В решении задач можно применять продвинутые стратегии, например классификацию по темам, несколько решений одной задачи или одно решение для нескольких задач; соответствующий опыт можно найти в различных сообществах.</li>
<li><strong>Этап 2: решение алгоритмических задач</strong>. Рекомендуется начинать с популярных задач и решить не менее 100 из них, чтобы познакомиться с основными алгоритмическими проблемами. При первых попытках «забывание знаний» может стать испытанием, но это нормально. Следуйте при повторении задач «кривой забывания Эббингауза», и обычно после 3-5 циклов повторения материал хорошо запоминается. Рекомендуемые списки задач и планы практики см. в этом <a href="https://github.com/krahets/LeetCode-Book">репозитории GitHub</a>.</li>
<li><strong>Этап 3: построение системы знаний</strong>. В процессе обучения можно читать статьи по алгоритмам, изучать каркасы решений и учебники, чтобы постоянно обогащать свою систему знаний. В решении задач можно применять продвинутые стратегии, например классификацию по темам, несколько решений одной задачи или одно решение для нескольких задач. Соответствующий опыт можно найти в различных сообществах.</li>
</ol>
<p>Как показано на рисунке 0-8, содержание этой книги в основном охватывает "этап 1" и призвано помочь вам более эффективно перейти к обучению на этапах 2 и 3.</p>
<p>Как показано на рисунке 0-8, содержание этой книги в основном охватывает «этап 1» и призвано помочь вам более эффективно перейти к обучению на этапах 2 и 3.</p>
<p><img alt="Дорожная карта изучения алгоритмов" class="animation-figure" src="../suggestions.assets/learning_route.png" /></p>
<p align="center"> Рисунок 0-8 &nbsp; Дорожная карта изучения алгоритмов </p>