diff --git a/ru/docs/chapter_introduction/algorithms_are_everywhere.md b/ru/docs/chapter_introduction/algorithms_are_everywhere.md index afe7f11e1..e194f751a 100644 --- a/ru/docs/chapter_introduction/algorithms_are_everywhere.md +++ b/ru/docs/chapter_introduction/algorithms_are_everywhere.md @@ -39,18 +39,18 @@ **Пример 3: сдача**. Предположим, что в супермаркете мы купили товар стоимостью $69$ руб. и дали кассиру купюру в $100$ руб. Кассир должен вернуть нам $31$ руб. Обычно он рассуждает так, как показано на рисунке ниже. -1. Варианты выбора - это купюры номиналом меньше $31$ руб. Пусть у нас имеются номиналы $1$ , $5$ , $10$ и $20$ руб. -2. Возьмем самую крупную доступную купюру в $20$ руб. Остаток сдачи составит $31 - 20 = 11$ руб. -3. Возьмем самую крупную из оставшихся купюр в $10$ руб. Остаток составит $11 - 10 = 1$ руб. -4. Возьмем самую крупную из оставшихся купюр в $1$ руб. Остаток составит $1 - 1 = 0$ руб. -5. Завершим выдачу сдачи, схема: $20 + 10 + 1 = 31$ руб. +1. Варианты выбора – это купюры номиналом меньше $31$ руб. Пусть у нас имеются номиналы $1$ , $5$ , $10$ и $20$ руб. +2. Взять самую крупную доступную купюру в $20$ руб. Остаток сдачи составит $31 - 20 = 11$ руб. +3. Взять самую крупную из оставшихся купюр в $10$ руб. Остаток составит $11 - 10 = 1$ руб. +4. Взять самую крупную из оставшихся купюр в $1$ руб. Остаток составит $1 - 1 = 0$ руб. +5. Завершить выдачу сдачи, схема: $20 + 10 + 1 = 31$ руб. ![Этапы выдачи сдачи](algorithms_are_everywhere.assets/greedy_change.png) -В этих шагах мы на каждом этапе выбираем наилучший вариант, используя купюры наибольшего номинала, и в итоге получаем рабочую схему сдачи. С точки зрения структуры данных и алгоритмов этот метод по своей сути является жадным алгоритмом. +В этих шагах мы на каждом этапе выбираем наилучший вариант (используя купюры наибольшего номинала), в итоге получая рабочую схему сдачи. С точки зрения структуры данных и алгоритмов этот метод по своей сути является жадным алгоритмом. -От приготовления блюда до межзвездных путешествий решение практически любой задачи неразрывно связано с алгоритмами. Появление компьютеров позволило нам с помощью программирования хранить структуры данных в памяти, а также писать код для вызовов к CPU и GPU для выполнения алгоритмов. Таким образом, мы можем переносить задачи из реальной жизни в компьютер и решать различные сложные проблемы более эффективно. +От приготовления блюда до межзвездных путешествий решение практически любой задачи неразрывно связано с алгоритмами. Появление компьютеров позволило нам с помощью программирования хранить структуры данных в памяти, а также писать код для вызовов к центральному и графическому процессорам для выполнения алгоритмов. Таким образом, мы можем переносить задачи из реальной жизни в компьютер, решая различные сложные проблемы более эффективно. !!! tip - Если представление о структурах данных, алгоритмах, массивах и двоичном поиске пока остается расплывчатым, просто продолжайте читать. Эта книга постепенно введет вас в мир структур данных и алгоритмов. + Если вы все еще испытываете трудности с пониманием таких понятий, как структуры данных, алгоритмы, массивы и двоичный поиск, продолжайте чтение. Эта книга проведет вас в мир знаний об этих фундаментальных понятиях. diff --git a/ru/docs/chapter_introduction/index.md b/ru/docs/chapter_introduction/index.md index 8a1e391f6..5489f7d3c 100644 --- a/ru/docs/chapter_introduction/index.md +++ b/ru/docs/chapter_introduction/index.md @@ -4,6 +4,6 @@ !!! abstract - Юная девушка кружится в танце, переплетаясь с данными, а по подолу ее платья струится мелодия алгоритмов. + Юная девушка танцует, окруженная вихрем данных. С подола ее платья струится мелодия алгоритмов. - Она приглашает вас присоединиться к танцу: следуйте за ее шагами и войдите в мир алгоритмов, полный логики и красоты. + Она приглашает вас на танец. Следуйте за ней, чтобы войти в мир алгоритмов, полный логики и красоты. diff --git a/ru/docs/chapter_introduction/summary.md b/ru/docs/chapter_introduction/summary.md index 6053b82cf..8fb3b164b 100644 --- a/ru/docs/chapter_introduction/summary.md +++ b/ru/docs/chapter_introduction/summary.md @@ -5,18 +5,18 @@ - Алгоритмы повсеместно присутствуют в нашей повседневной жизни и не являются недосягаемыми сложными знаниями. На самом деле мы уже освоили множество алгоритмов, которые помогают решать различные жизненные задачи. - Принцип поиска в словаре соответствует алгоритму двоичного поиска. Двоичный поиск иллюстрирует важную идею алгоритмов «разделяй и властвуй». - Процесс сортировки карт в колоде очень похож на алгоритм сортировки вставками, который хорошо подходит для сортировки небольших наборов данных. -- Процесс размена по своей сути является жадным алгоритмом, в котором на каждом этапе принимается наилучшее на данный момент решение. +- Процесс выдачи сдачи по своей сути является жадным алгоритмом, в котором на каждом этапе принимается наилучшее на данный момент решение. - Алгоритм представляет собой набор инструкций или шагов, предназначенных для решения конкретной задачи в ограниченное время, а структура данных - это способ организации и хранения данных в компьютере. - Структуры данных и алгоритмы тесно связаны. Структуры данных являются основой для алгоритмов, а алгоритмы оживляют структуры данных. - Структуры данных и алгоритмы можно сравнить с конструктором: детали конструктора представляют данные, их форма и способы соединения - структуры данных, а этапы сборки конструктора соответствуют алгоритмам. -### Q & A +### Вопросы и ответы -**Q**: Я программист и в повседневной работе никогда не использовал алгоритмы для решения задач, поскольку часто используемые алгоритмы уже встроены в языки программирования и ими можно пользоваться напрямую. Значит ли это, что рабочие задачи еще не требуют применения алгоритмов? +**Q**: Я программист, и я никогда не использовал алгоритмы для решения задач в своей повседневной работе, поскольку часто используемые алгоритмы уже встроены в языки программирования и их можно использовать напрямую. Означает ли это, что задачи, с которыми мы сталкиваемся на работе, не требуют применения алгоритмов? Если сравнить конкретные профессиональные навыки с приемами в боевых искусствах, то базовые дисциплины скорее напоминают «внутреннюю силу». -Я считаю, что изучение алгоритмов и других базовых дисциплин важно не для того, чтобы реализовывать их с нуля в работе, а для того, чтобы на основе полученных знаний принимать профессиональные решения и оценки при решении задач, тем самым повышая общее качество работы. Простой пример: каждый язык программирования имеет встроенные функции сортировки. +Я считаю, что изучение алгоритмов (и других базовых дисциплин) важно не для того, чтобы реализовывать их с нуля в работе, а для того, чтобы на основе полученных знаний принимать профессиональные решения и давать оценки при решении задач, тем самым повышая общее качество работы. Простой пример: каждый язык программирования имеет встроенные функции сортировки. - Если бы мы не изучали структуры данных и алгоритмы, то, получив любые данные, возможно, просто передали бы их этой функции сортировки. Все работает гладко, производительность хорошая, и на первый взгляд проблем нет. - Однако если мы изучили алгоритмы, то знаем, что временная сложность встроенной функции сортировки составляет $O(n \log n)$. Если же данные представлены целыми числами фиксированной разрядности, например номерами студентов, то можно использовать более эффективный метод поразрядной сортировки, снизив временную сложность до $O(nk)$ , где $k$ - это количество разрядов, а при больших объемах данных выиграть во времени, затратах и пользовательском опыте. diff --git a/ru/docs/chapter_introduction/what_is_dsa.md b/ru/docs/chapter_introduction/what_is_dsa.md index 85d4ed231..79e0e0f04 100644 --- a/ru/docs/chapter_introduction/what_is_dsa.md +++ b/ru/docs/chapter_introduction/what_is_dsa.md @@ -10,26 +10,26 @@ ## Определение структуры данных -Структура данных (data structure) - это способ организации и хранения данных, включающий содержимое данных, их взаимосвязи и методы операций с ними. Структура данных преследует следующие цели. +Структура данных (data structure) - это способ организации и хранения данных, включающий содержимое данных, их взаимосвязи и методы операций с ними. Структура данных преследует следующие цели: -- Минимизировать занимаемое пространство для экономии памяти компьютера. -- Обеспечивать максимально быструю обработку данных, включая доступ, добавление, удаление и обновление данных. -- Обеспечивать простое представление данных и логическую информацию для эффективного выполнения алгоритмов. +- минимизацию занимаемого пространства для экономии памяти компьютера; +- максимально быструю обработку данных, включая доступ, добавление, удаление и обновление данных; +- обеспечение простого представления данных и логической информации для эффективного выполнения алгоритмов. -**Проектирование структуры данных - это процесс, полный компромиссов**. Если вы хотите улучшить один аспект, часто приходится идти на уступки в другом. Приведем два примера. +**Проектирование структуры данных – это процесс, полный компромиссов**. Если вы хотите улучшить один аспект, часто приходится идти на уступки в другом. Приведем два примера. - Связный список, по сравнению с массивом, более удобен для добавления и удаления данных, но имеет проблемы со скоростью доступа к данным. - Граф, по сравнению со связным списком, предоставляет более богатую логическую информацию, но требует большего объема памяти. -## Связь между структурами данных и алгоритмами +## Взаимосвязь структур данных и алгоритмов -Как показано на рисунке ниже, структуры данных и алгоритмы тесно взаимосвязаны, что проявляется в следующих трех аспектах. +Как показано на рисунке ниже, структуры данных и алгоритмы тесно взаимосвязаны, что проявляется в следующих трех аспектах: - Структуры данных являются основой алгоритмов. Они обеспечивают структурированное хранение данных и методы их обработки. - Алгоритмы оживляют структуры данных. Сами по себе структуры данных лишь хранят информацию, но в сочетании с алгоритмами они позволяют решать конкретные задачи. -- Алгоритмы можно реализовать на основе различных структур данных, однако эффективность их выполнения может значительно различаться, поэтому выбор подходящей структуры данных является ключевым фактором. +- Алгоритмы можно реализовать на основе различных структур данных, однако эффективность их выполнения может значительно различаться. Поэтому выбор подходящей структуры данных является ключевым фактором. -![Связь между структурами данных и алгоритмами](what_is_dsa.assets/relationship_between_data_structure_and_algorithm.png) +![Взаимосвязь структур данных и алгоритмов](what_is_dsa.assets/relationship_between_data_structure_and_algorithm.png) Структуры данных и алгоритмы подобны конструктору, как показано на рисунке ниже. Комплект конструктора, помимо множества деталей, содержит также подробную инструкцию по сборке. Следуя этой инструкции шаг за шагом, можно собрать красивую модель.