mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-26 04:56:06 +00:00
deploy
This commit is contained in:
@@ -4398,27 +4398,22 @@
|
||||
<ul>
|
||||
<li><strong>Анализ сложности</strong>: критерии и методы оценки структур данных и алгоритмов. Методы расчета временной и пространственной сложности, распространенные типы, примеры и т. д.</li>
|
||||
<li><strong>Структуры данных</strong>: классификация основных типов данных и структур данных. Определение, преимущества и недостатки, основные операции, распространенные типы, типичные приложения и методы реализации массивов, списков, стеков, очередей, хеш-таблиц, деревьев, куч и графов.</li>
|
||||
<li><strong>Алгоритмы</strong>: определение, преимущества и недостатки, эффективность, области применения, этапы решения и примеры задач для поиска, сортировки, алгоритма "разделяй и властвуй", поиска с возвратом, динамического программирования и жадных алгоритмов.</li>
|
||||
<li><strong>Алгоритмы</strong>: определение, преимущества и недостатки, эффективность, области применения, этапы решения и примеры задач для поиска, сортировки, алгоритма «разделяй и властвуй», поиска с возвратом, динамического программирования и жадных алгоритмов.</li>
|
||||
</ul>
|
||||
<p><img alt="Основное содержание книги" class="animation-figure" src="../about_the_book.assets/hello_algo_mindmap.png" /></p>
|
||||
<p align="center"> Рисунок 0-1 Основное содержание книги </p>
|
||||
|
||||
<h2 id="013">0.1.3 Благодарности<a class="headerlink" href="#013" title="Permanent link">¶</a></h2>
|
||||
<p>Эта книга постоянно совершенствуется благодаря совместным усилиям множества участников открытого сообщества. Благодарим каждого автора, вложившего свое время и силы; их имена перечислены в порядке, автоматически сгенерированном GitHub: krahets, coderonion, Gonglja, nuomi1, Reanon, justin-tse, hpstory, danielsss, curtishd, night-cruise, S-N-O-R-L-A-X, rongyi, msk397, gvenusleo, khoaxuantu, rivertwilight, K3v123, gyt95, zhuoqinyue, yuelinxin, Zuoxun, mingXta, Phoenix0415, FangYuan33, GN-Yu, longsizhuo, pengchzn, QiLOL, Cathay-Chen, guowei-gong, xBLACKICEx, IsChristina, JoseHung, qualifier1024, hello-ikun, magentaqin, Guanngxu, thomasq0, sunshinesDL, L-Super, Transmigration-zhou, WSL0809, Slone123c, lhxsm, yuan0221, what-is-me, theNefelibatas, Shyam-Chen, sangxiaai, longranger2, codeberg-user, xiongsp, JeffersonHuang, prinpal, seven1240, Wonderdch, malone6, xiaomiusa87, gaofer, bluebean-cloud, a16su, SamJin98, hongyun-robot, nanlei, XiaChuerwu, yd-j, iron-irax, mgisr, steventimes, junminhong, heshuyue, danny900714, Nigh, Dr-XYZ, MolDuM, XC-Zero, reeswell, PXG-XPG, NI-SW, Horbin-Magician, Enlightenus, YangXuanyi, xjr7670, beatrix-chan, DullSword, qq909244296, iStig, boloboloda, hts0000, gledfish, fbigm, echo1937, jiaxianhua, wenjianmin, keshida, kilikilikid, lclc6, lwbaptx, linyejoe2, liuxjerry, szu17dmy, dshlstarr, Yucao-cy, coderlef, czruby, bongbongbakudan, beintentional, ZongYangL, ZhongYuuu, ZhongGuanbin, hezhizhen, linzeyan, ZJKung, JTCPOWI, KawaiiAsh, luluxia, xb534, ztkuaikuai, yw-1021, ElaBosak233, baagod, zhouLion, yishangzhang, yi427, yanedie, yabo083, weibk, wangwang105, th1nk3r-ing, tao363, 4yDX3906, syd168, sslmj2020, smilelsb, siqyka, selear, sdshaoda, Xi-Row, popozhu, nuquist19, noobcodemaker, XiaoK29, chadyi, lyl625760, lucaswangdev, llql1211, 0130w, shanghai-Jerry, EJackYang, Javesun99, eltociear, lipusheng, KNChiu, BlindTerran, ShiMaRing, lovelock, FreddieLi, FloranceYeh, fanchenggang, gltianwen, goerll, nedchu, curly210102, CuB3y0nd, KraHsu, CarrotDLaw, youshaoXG, bubble9um, Asashishi, Asa0oo0o0o, fanenr, eagleanurag, akshiterate, 52coder, foursevenlove, KorsChen, hopkings2008, yang-le, realwujing, Evilrabbit520, Umer-Jahangir, Turing-1024-Lee, Suremotoo, paoxiaomooo, Chieko-Seren, Senrian, Allen-Scai, 19santosh99, ymmmas, Risuntsy, Richard-Zhang1019, RafaelCaso, qingpeng9802, primexiao, Urbaner3, codetypess, nidhoggfgg, MwumLi, CreatorMetaSky, martinx, ZnYang2018, hugtyftg, logan-qiu, psychelzh, Kunchen-Luo, Keynman и KeiichiKasai.</p>
|
||||
<p>Эта книга постоянно совершенствуется благодаря совместным усилиям множества участников открытого сообщества. Благодарим каждого автора, вложившего свое время и силы. Их имена перечислены в порядке, автоматически сгенерированном GitHub: krahets, coderonion, Gonglja, nuomi1, Reanon, justin-tse, hpstory, danielsss, curtishd, night-cruise, S-N-O-R-L-A-X, rongyi, msk397, gvenusleo, khoaxuantu, rivertwilight, K3v123, gyt95, zhuoqinyue, yuelinxin, Zuoxun, mingXta, Phoenix0415, FangYuan33, GN-Yu, longsizhuo, pengchzn, QiLOL, Cathay-Chen, guowei-gong, xBLACKICEx, IsChristina, JoseHung, qualifier1024, hello-ikun, magentaqin, Guanngxu, thomasq0, sunshinesDL, L-Super, Transmigration-zhou, WSL0809, Slone123c, lhxsm, yuan0221, what-is-me, theNefelibatas, Shyam-Chen, sangxiaai, longranger2, codeberg-user, xiongsp, JeffersonHuang, prinpal, seven1240, Wonderdch, malone6, xiaomiusa87, gaofer, bluebean-cloud, a16su, SamJin98, hongyun-robot, nanlei, XiaChuerwu, yd-j, iron-irax, mgisr, steventimes, junminhong, heshuyue, danny900714, Nigh, Dr-XYZ, MolDuM, XC-Zero, reeswell, PXG-XPG, NI-SW, Horbin-Magician, Enlightenus, YangXuanyi, xjr7670, beatrix-chan, DullSword, qq909244296, iStig, boloboloda, hts0000, gledfish, fbigm, echo1937, jiaxianhua, wenjianmin, keshida, kilikilikid, lclc6, lwbaptx, linyejoe2, liuxjerry, szu17dmy, dshlstarr, Yucao-cy, coderlef, czruby, bongbongbakudan, beintentional, ZongYangL, ZhongYuuu, ZhongGuanbin, hezhizhen, linzeyan, ZJKung, JTCPOWI, KawaiiAsh, luluxia, xb534, ztkuaikuai, yw-1021, ElaBosak233, baagod, zhouLion, yishangzhang, yi427, yanedie, yabo083, weibk, wangwang105, th1nk3r-ing, tao363, 4yDX3906, syd168, sslmj2020, smilelsb, siqyka, selear, sdshaoda, Xi-Row, popozhu, nuquist19, noobcodemaker, XiaoK29, chadyi, lyl625760, lucaswangdev, llql1211, 0130w, shanghai-Jerry, EJackYang, Javesun99, eltociear, lipusheng, KNChiu, BlindTerran, ShiMaRing, lovelock, FreddieLi, FloranceYeh, fanchenggang, gltianwen, goerll, nedchu, curly210102, CuB3y0nd, KraHsu, CarrotDLaw, youshaoXG, bubble9um, Asashishi, Asa0oo0o0o, fanenr, eagleanurag, akshiterate, 52coder, foursevenlove, KorsChen, hopkings2008, yang-le, realwujing, Evilrabbit520, Umer-Jahangir, Turing-1024-Lee, Suremotoo, paoxiaomooo, Chieko-Seren, Senrian, Allen-Scai, 19santosh99, ymmmas, Risuntsy, Richard-Zhang1019, RafaelCaso, qingpeng9802, primexiao, Urbaner3, codetypess, nidhoggfgg, MwumLi, CreatorMetaSky, martinx, ZnYang2018, hugtyftg, logan-qiu, psychelzh, Kunchen-Luo, Keynman и KeiichiKasai.</p>
|
||||
<p>Рецензирование кода книги выполнили coderonion, curtishd, Gonglja, gvenusleo, hpstory, justin-tse, khoaxuantu, krahets, night-cruise, nuomi1, Reanon и rongyi (в алфавитном порядке). Благодарим их за потраченное время и силы, которые обеспечили стандартизацию и единообразие кода на различных языках.</p>
|
||||
<p>Английскую версию книги вычитали yuelinxin, K3v123, magentaqin, QiLOL, Phoenix0415, SamJin98, yanedie, RafaelCaso, pengchzn и thomasq0; японскую версию - eltociear; русскую версию - И. А. Шевкун и Yuyan Huang; традиционную китайскую версию - Shyam-Chen и Dr-XYZ. Именно благодаря их вкладу эта книга может служить более широкому кругу читателей, и мы искренне благодарим их.</p>
|
||||
<p>Английскую версию книги вычитали yuelinxin, K3v123, magentaqin, QiLOL, Phoenix0415, SamJin98, yanedie, RafaelCaso, pengchzn и thomasq0. Японскую версию - eltociear. Русскую версию - И. А. Шевкун и Yuyan Huang. Традиционную китайскую версию - Shyam-Chen и Dr-XYZ. Именно благодаря их вкладу эта книга может служить более широкому кругу читателей, и мы искренне благодарим их.</p>
|
||||
<p>Инструмент генерации ePub-версии этой книги разработал zhongfq. Благодарим его за вклад, который дал читателям более гибкий способ чтения.</p>
|
||||
<p>В процессе создания этой книги мне помогало много людей.</p>
|
||||
<ul>
|
||||
<li>Благодарю моего наставника в компании, доктора Ли Си: в одной из бесед вы вдохновили меня быстрее начать, что укрепило мою решимость написать эту книгу;</li>
|
||||
<li>Благодарю мою девушку Bubble, первого читателя этой книги: с позиции новичка в алгоритмах она дала много ценных советов, благодаря которым книга стала более понятной и доступной;</li>
|
||||
<li>Благодарю Tengbao, Qibao и Feibao за креативное название книги, которое навевает приятные воспоминания о первой строке кода "Hello World!";</li>
|
||||
<li>Благодарю Xiaoquan за профессиональную помощь в вопросах интеллектуальной собственности, что сыграло важную роль в совершенствовании этой открытой книги;</li>
|
||||
<li>Благодарю Sutong за дизайн обложки и логотипа книги, а также за терпение при многочисленных исправлениях по моим просьбам;</li>
|
||||
<li>Благодарю @squidfunk за советы по оформлению и за разработку открытой темы документации <a href="https://github.com/squidfunk/mkdocs-material">Material-for-MkDocs</a>.</li>
|
||||
<li>Благодарю моего наставника в компании, доктора Ли Си: в одной из бесед вы вдохновили меня быстрее начать, что укрепило мою решимость написать эту книгу. - Благодарю мою девушку Bubble, первого читателя этой книги: с позиции новичка в алгоритмах она дала много ценных советов, благодаря которым книга стала более понятной и доступной. - Благодарю Tengbao, Qibao и Feibao за креативное название книги, которое навевает приятные воспоминания о первой строке кода «Hello World!». - Благодарю Xiaoquan за профессиональную помощь в вопросах интеллектуальной собственности, что сыграло важную роль в совершенствовании этой открытой книги. - Благодарю Sutong за дизайн обложки и логотипа книги, а также за терпение при многочисленных исправлениях по моим просьбам. - Благодарю @squidfunk за советы по оформлению и за разработку открытой темы документации <a href="https://github.com/squidfunk/mkdocs-material">Material-for-MkDocs</a>.</li>
|
||||
</ul>
|
||||
<p>В процессе написания книги я ознакомился с множеством учебников и статей по структурам данных и алгоритмам. Эти работы послужили отличным образцом для этой книги, обеспечив ее точность и качество. Я искренне благодарю всех преподавателей и предшественников за их выдающийся вклад!</p>
|
||||
<p>Эта книга пропагандирует метод обучения, сочетающий умственную и практическую деятельность; в этом отношении на меня сильно повлияла <a href="https://github.com/d2l-ai/d2l-zh">Dive into Deep Learning</a>. Я настоятельно рекомендую эту замечательную работу всем читателям.</p>
|
||||
<p>Эта книга пропагандирует метод обучения, сочетающий умственную и практическую деятельность. В этом отношении на меня сильно повлияла <a href="https://github.com/d2l-ai/d2l-zh">Dive into Deep Learning</a>. Я настоятельно рекомендую эту замечательную работу всем читателям.</p>
|
||||
<p><strong>Сердечно благодарю моих родителей: именно ваша постоянная поддержка и ободрение дали мне возможность заняться этим увлекательным делом</strong>.</p>
|
||||
|
||||
<!-- Source file information -->
|
||||
|
||||
@@ -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 Пример анимированной иллюстрации </p>
|
||||
|
||||
<h2 id="023">0.2.3 Углубление понимания через практику кода<a class="headerlink" href="#023" title="Permanent link">¶</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 Клонирование репозитория и загрузка кода </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 Блоки кода и соответствующие исходные файлы </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 Визуальный запуск 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 Дорожная карта изучения алгоритмов </p>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user