Add ru version (#1865)

* Add Russian docs site baseline

* Add Russian localized codebase

* Polish Russian code wording

* Update ru code translation.

* Update code translation and chapter covers.

* Fix pythontutor extraction.

* Add README and landing page.

* placeholder of profiles

* Use figures of English version

* Remove chapter paperbook
This commit is contained in:
Yudong Jin
2026-03-28 04:24:07 +08:00
committed by GitHub
parent 2ca570cc33
commit 772183705e
1958 changed files with 108186 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

+47
View File
@@ -0,0 +1,47 @@
# Присоединяйтесь к созданию книги
Возможности автора ограничены, поэтому в книге неизбежно могут встречаться упущения и ошибки. Просим отнестись к этому с пониманием. Если вы заметите опечатки, неработающие ссылки, пропуски в содержании, двусмысленные формулировки, неясные объяснения или неудачную структуру изложения, пожалуйста, помогите нам это исправить, чтобы читатели получили более качественный учебный ресурс.
GitHub ID всех [участников](https://github.com/krahets/hello-algo/graphs/contributors) будут указаны на главных страницах репозитория книги, веб-версии и PDF-версии в знак благодарности за их бескорыстный вклад в сообщество открытого исходного кода.
!!! success "Сила открытого исходного кода"
Интервал между двумя тиражами бумажной книги обычно довольно велик, поэтому обновлять содержание очень неудобно.
В этой же открытой книге цикл обновления содержания сокращается до нескольких дней, а иногда даже до нескольких часов.
### Небольшие правки содержания
Как показано на рисунке ниже, в правом верхнем углу каждой страницы есть "значок редактирования". Вы можете изменить текст или код следующим образом.
1. Нажмите на "значок редактирования". Если появится сообщение "You need to fork this repository", согласитесь с этим действием.
2. Измените содержимое исходного Markdown-файла, проверьте корректность правок и постарайтесь сохранить единый стиль оформления.
3. Внизу страницы заполните описание изменений, затем нажмите кнопку "Propose file change". После перехода на следующую страницу нажмите кнопку "Create pull request", чтобы создать pull request.
![Кнопка редактирования страницы](contribution.assets/edit_markdown.png)
Изображения нельзя изменить напрямую, поэтому проблему с ними нужно описывать через новый [Issue](https://github.com/krahets/hello-algo/issues) или комментарий. Мы постараемся как можно быстрее перерисовать и заменить изображение.
### Создание содержания
Если вам интересно участвовать в этом проекте с открытым исходным кодом, например переводить код на другие языки программирования или расширять содержание статей, то следует придерживаться следующего рабочего процесса Pull Request.
1. Войдите в GitHub и сделайте Fork [репозитория книги](https://github.com/krahets/hello-algo) в свой личный аккаунт.
2. Перейдите на страницу своего Fork-репозитория и с помощью команды `git clone` клонируйте репозиторий локально.
3. Создавайте и редактируйте содержание локально, затем проведите полное тестирование и проверьте корректность кода.
4. Сделайте Commit для локальных изменений, после чего выполните Push в удаленный репозиторий.
5. Обновите страницу репозитория и нажмите кнопку "Create pull request", чтобы отправить pull request.
### Развертывание Docker
В корневом каталоге `hello-algo` выполните следующий Docker-скрипт, после чего проект будет доступен по адресу `http://localhost:8000`:
```shell
docker-compose up -d
```
Удалить развертывание можно следующей командой:
```shell
docker-compose down
```
+3
View File
@@ -0,0 +1,3 @@
# Приложение
![Приложение](../assets/covers/chapter_appendix.jpg)
Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

+68
View File
@@ -0,0 +1,68 @@
# Установка среды программирования
## Установка IDE
В качестве локальной интегрированной среды разработки (IDE) рекомендуется использовать открытую и легковесную VS Code. Перейдите на [официальный сайт VS Code](https://code.visualstudio.com/), выберите версию для своей операционной системы и установите ее.
![Загрузка VS Code с официального сайта](installation.assets/vscode_installation.png)
VS Code обладает мощной экосистемой расширений и поддерживает запуск и отладку большинства языков программирования. Например, после установки расширения "Python Extension Pack" можно отлаживать код на Python. Процесс установки показан на рисунке ниже.
![Установка расширений VS Code](installation.assets/vscode_extension_installation.png)
## Установка языковой среды
### Среда Python
1. Загрузите и установите [Miniconda3](https://docs.conda.io/en/latest/miniconda.html), требуется Python 3.10 или более новая версия.
2. В магазине расширений VS Code найдите `python` и установите Python Extension Pack.
3. (Необязательно) Введите в командной строке `pip install black`, чтобы установить инструмент форматирования кода.
### Среда C/C++
1. В Windows требуется установить [MinGW](https://sourceforge.net/projects/mingw-w64/files/) ([руководство по настройке](https://blog.csdn.net/qq_33698226/article/details/129031241)); в macOS Clang уже установлен по умолчанию.
2. В магазине расширений VS Code найдите `c++` и установите C/C++ Extension Pack.
3. (Необязательно) Откройте страницу Settings, найдите параметр форматирования `Clang_format_fallback Style` и задайте значение `{ BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }`.
### Среда Java
1. Загрузите и установите [OpenJDK](https://jdk.java.net/18/) (требуемая версия: > JDK 9).
2. В магазине расширений VS Code найдите `java` и установите Extension Pack for Java.
### Среда C#
1. Загрузите и установите [.Net 8.0](https://dotnet.microsoft.com/en-us/download).
2. В магазине расширений VS Code найдите `C# Dev Kit` и установите C# Dev Kit ([руководство по настройке](https://code.visualstudio.com/docs/csharp/get-started)).
3. Также можно использовать Visual Studio ([руководство по установке](https://learn.microsoft.com/zh-cn/visualstudio/install/install-visual-studio?view=vs-2022)).
### Среда Go
1. Загрузите и установите [go](https://go.dev/dl/).
2. В магазине расширений VS Code найдите `go` и установите Go.
3. Нажмите `Ctrl + Shift + P`, чтобы открыть командную палитру, введите `go`, выберите `Go: Install/Update Tools`, отметьте все инструменты и установите их.
### Среда Swift
1. Загрузите и установите [Swift](https://www.swift.org/download/).
2. В магазине расширений VS Code найдите `swift` и установите [Swift for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang).
### Среда JavaScript
1. Загрузите и установите [Node.js](https://nodejs.org/en/).
2. (Необязательно) В магазине расширений VS Code найдите `Prettier` и установите инструмент форматирования кода.
### Среда TypeScript
1. Выполните те же шаги, что и для среды JavaScript.
2. Установите [TypeScript Execute (tsx)](https://github.com/privatenumber/tsx?tab=readme-ov-file#global-installation).
3. В магазине расширений VS Code найдите `typescript` и установите [Pretty TypeScript Errors](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors).
### Среда Dart
1. Загрузите и установите [Dart](https://dart.dev/get-dart).
2. В магазине расширений VS Code найдите `dart` и установите [Dart](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code).
### Среда Rust
1. Загрузите и установите [Rust](https://www.rust-lang.org/tools/install).
2. В магазине расширений VS Code найдите `rust` и установите [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer).
+137
View File
@@ -0,0 +1,137 @@
# Глоссарий
В таблице ниже перечислены важные термины, встречающиеся в книге. Обратите внимание на следующие моменты.
- Рекомендуем запомнить английские названия терминов, чтобы легче читать англоязычную литературу.
- В русской версии третий столбец дублирует основной перевод, чтобы сохранить единый формат таблицы.
<p align="center"> Таблица <id> &nbsp; Важные термины по структурам данных и алгоритмам </p>
| English | Русский | Русский |
| ------------------------------ | ------------------------------ | ------------------------------ |
| algorithm | алгоритм | алгоритм |
| data structure | структура данных | структура данных |
| code | код | код |
| file | файл | файл |
| function | функция | функция |
| method | метод | метод |
| variable | переменная | переменная |
| asymptotic complexity analysis | асимптотический анализ сложности | асимптотический анализ сложности |
| time complexity | временная сложность | временная сложность |
| space complexity | пространственная сложность | пространственная сложность |
| loop | цикл | цикл |
| iteration | итерация | итерация |
| recursion | рекурсия | рекурсия |
| tail recursion | хвостовая рекурсия | хвостовая рекурсия |
| recursion tree | дерево рекурсии | дерево рекурсии |
| big-$O$ notation | нотация big-$O$ | нотация big-$O$ |
| asymptotic upper bound | асимптотическая верхняя граница | асимптотическая верхняя граница |
| sign-magnitude | прямой код | прямой код |
| 1s complement | обратный код | обратный код |
| 2s complement | дополнительный код | дополнительный код |
| array | массив | массив |
| index | индекс | индекс |
| linked list | связный список | связный список |
| linked list node, list node | узел связного списка | узел связного списка |
| head node | головной узел | головной узел |
| tail node | хвостовой узел | хвостовой узел |
| list | список | список |
| dynamic array | динамический массив | динамический массив |
| hard disk | жесткий диск | жесткий диск |
| random-access memory (RAM) | оперативная память | оперативная память |
| cache memory | кеш-память | кеш-память |
| cache miss | промах кеша | промах кеша |
| cache hit rate | коэффициент попадания в кеш | коэффициент попадания в кеш |
| stack | стек | стек |
| top of the stack | вершина стека | вершина стека |
| bottom of the stack | основание стека | основание стека |
| queue | очередь | очередь |
| double-ended queue | двусторонняя очередь | двусторонняя очередь |
| front of the queue | голова очереди | голова очереди |
| rear of the queue | хвост очереди | хвост очереди |
| hash table | хеш-таблица | хеш-таблица |
| hash set | хеш-набор | хеш-набор |
| bucket | корзина | корзина |
| hash function | хеш-функция | хеш-функция |
| hash collision | хеш-коллизия | хеш-коллизия |
| load factor | коэффициент заполнения | коэффициент заполнения |
| separate chaining | цепная адресация | цепная адресация |
| open addressing | открытая адресация | открытая адресация |
| linear probing | линейное зондирование | линейное зондирование |
| lazy deletion | ленивое удаление | ленивое удаление |
| binary tree | двоичное дерево | двоичное дерево |
| tree node | узел дерева | узел дерева |
| left-child node | левый дочерний узел | левый дочерний узел |
| right-child node | правый дочерний узел | правый дочерний узел |
| parent node | родительский узел | родительский узел |
| left subtree | левое поддерево | левое поддерево |
| right subtree | правое поддерево | правое поддерево |
| root node | корневой узел | корневой узел |
| leaf node | листовой узел | листовой узел |
| edge | ребро | ребро |
| level | уровень | уровень |
| degree | степень | степень |
| height | высота | высота |
| depth | глубина | глубина |
| perfect binary tree | идеальное двоичное дерево | идеальное двоичное дерево |
| complete binary tree | совершенное двоичное дерево | совершенное двоичное дерево |
| full binary tree | полное двоичное дерево | полное двоичное дерево |
| balanced binary tree | сбалансированное двоичное дерево | сбалансированное двоичное дерево |
| binary search tree | двоичное дерево поиска | двоичное дерево поиска |
| AVL tree | АВЛ-дерево | АВЛ-дерево |
| red-black tree | красно-черное дерево | красно-черное дерево |
| level-order traversal | обход по уровням | обход по уровням |
| breadth-first traversal | обход в ширину | обход в ширину |
| depth-first traversal | обход в глубину | обход в глубину |
| binary search tree | двоичное дерево поиска | двоичное дерево поиска |
| balanced binary search tree | сбалансированное двоичное дерево поиска | сбалансированное двоичное дерево поиска |
| balance factor | фактор баланса | фактор баланса |
| heap | куча | куча |
| max heap | максимальная куча | максимальная куча |
| min heap | минимальная куча | минимальная куча |
| priority queue | приоритетная очередь | приоритетная очередь |
| heapify | упорядочивание кучи | упорядочивание кучи |
| top-$k$ problem | поиск $k$ наибольших элементов | поиск $k$ наибольших элементов |
| graph | граф | граф |
| vertex | вершина | вершина |
| undirected graph | неориентированный граф | неориентированный граф |
| directed graph | ориентированный граф | ориентированный граф |
| connected graph | связный граф | связный граф |
| disconnected graph | несвязный граф | несвязный граф |
| weighted graph | взвешенный граф | взвешенный граф |
| adjacency | смежность | смежность |
| path | путь | путь |
| in-degree | входящая степень | входящая степень |
| out-degree | исходящая степень | исходящая степень |
| adjacency matrix | матрица смежности | матрица смежности |
| adjacency list | список смежности | список смежности |
| breadth-first search | поиск в ширину | поиск в ширину |
| depth-first search | поиск в глубину | поиск в глубину |
| binary search | двоичный поиск | двоичный поиск |
| searching algorithm | алгоритм поиска | алгоритм поиска |
| sorting algorithm | алгоритм сортировки | алгоритм сортировки |
| selection sort | сортировка выбором | сортировка выбором |
| bubble sort | сортировка пузырьком | сортировка пузырьком |
| insertion sort | сортировка вставкой | сортировка вставкой |
| quick sort | быстрая сортировка | быстрая сортировка |
| merge sort | сортировка слиянием | сортировка слиянием |
| heap sort | пирамидальная сортировка | пирамидальная сортировка |
| bucket sort | блочная сортировка | блочная сортировка |
| counting sort | сортировка подсчетом | сортировка подсчетом |
| radix sort | поразрядная сортировка | поразрядная сортировка |
| divide and conquer | разделяй и властвуй | разделяй и властвуй |
| hanota problem | задача о Ханойской башне | задача о Ханойской башне |
| backtracking algorithm | алгоритм поиска с возвратом | алгоритм поиска с возвратом |
| constraint | ограничение | ограничение |
| solution | решение | решение |
| state | состояние | состояние |
| pruning | отсечение | отсечение |
| permutations problem | задача о перестановках | задача о перестановках |
| subset-sum problem | задача о сумме подмножеств | задача о сумме подмножеств |
| $n$-queens problem | задача о $n$ ферзях | задача о $n$ ферзях |
| dynamic programming | динамическое программирование | динамическое программирование |
| initial state | начальное состояние | начальное состояние |
| state-transition equation | уравнение перехода состояния | уравнение перехода состояния |
| knapsack problem | задача о рюкзаке | задача о рюкзаке |
| edit distance problem | задача о расстоянии редактирования | задача о расстоянии редактирования |
| greedy algorithm | жадный алгоритм | жадный алгоритм |