First version.

This commit is contained in:
krahets
2026-01-20 15:08:42 +08:00
parent 2213a59ff6
commit 8071daddaa
106 changed files with 11790 additions and 0 deletions
+41
View File
@@ -0,0 +1,41 @@
# Совместная разработка
Ввиду ограниченных возможностей автора в книге неизбежно присутствуют некоторые упущения и ошибки, просим отнестись к этому с пониманием. Если вы обнаружите опечатки, неработающие ссылки, неполное содержание, двусмысленности в тексте, неясные объяснения или нерациональную структуру изложения, пожалуйста, помогите нам в исправлении, чтобы предоставить читателям более качественные учебные ресурсы.
Все идентификаторы GitHub авторов будут представлены на странице репозитория книги, в веб-версии и PDF-версии в знак благодарности за их бескорыстный вклад в сообщество с открытым исходным кодом.
### Небольшая корректировка содержимого
В правом верхнем углу каждой страницы есть значок редактирования, как показано на рис. 16.3. Следуйте следующим шагам для изменения текста или кода.
1. Нажмите на значок редактирования. Если появится сообщение «Необходимо создать ответвление этого репозитория», согласитесь на это действие.
2. Измените содержимое исходного файла Markdown, проверьте правильность содержания и постарайтесь сохранить единый формат оформления.
3. В нижней части страницы заполните описание изменений, затем нажмите кнопку **Propose file change** (предложить изменение файла). После перехода на следующую страницу нажмите кнопку **Create pull request** (Создать запрос на слияние), чтобы инициировать запрос на слияние.
![Кнопка редактирования страницы](../assets/media/image1087.jpeg)
Изображения нельзя изменить напрямую, необходимо создать новую Issue (Задачу) или оставить комментарий для описания проблемы. Мы как можно быстрее изменим и обновим изображение.
### Создание содержимого
Если вы заинтересованы в участии в этом проекте с открытым исходным кодом, включая перевод кода на другие языки программирования, расширение содержания статей и т. д., необходимо выполнить следующий рабочий процесс Pull Request (Запрос на слияние).
1. Войдите в GitHub, создайте ответвление хранилища кода книги в свой личный аккаунт.
2. Перейдите на страницу ответвления и используйте команду git clone для клонирования хранилища на локальный компьютер.
3. На локальном компьютере создайте содержимое и проведите полное тестирование, чтобы проверить правильность кода.
4. Зафиксируйте изменения, сделанные локально, затем отправьте их в удаленное хранилище.
5. Обновите страницу хранилища и нажмите кнопку **Create 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/media/image1081.jpeg)
+68
View File
@@ -0,0 +1,68 @@
# Установка программной среды
## Установка IDE
Рекомендуется использовать открытую и быструю интегрированную среду разработки (IDE) VS Code. Откройте [официальный сайт VS Code](https://code.visualstudio.com/) и выберите подходящую вашей операционной системе версию для загрузки и установки.
![Загрузка VS Code с официального сайта](../assets/media/image1083.jpeg)
VS Code обладает мощной экосистемой расширений и поддерживает выполнение и отладку большинства языков программирования. Например, после установки расширения Python Extension Pack можно выполнять отладку кода на Python. Этапы установки показаны на рисунке ниже.
![Установка расширений в VS Code](../assets/media/image1085.jpeg)
## Установка языковой среды
### Среда 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. (Не обязательно) Откройте страницу настроек, найдите параметр форматирования кода `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).
+133
View File
@@ -0,0 +1,133 @@
# Глоссарий
В табл. 16.1 приведен англо-русский словарь важных терминов, встречающихся в книге. Он поможет вам в чтении англоязычной литературы.
**Таблица 16.1.** Англо-русский словарь терминов
| 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 | обозначение «О» большое |
| asymptotic upper bound | асимптотическая верхняя граница |
| sign-magnitude | прямой код |
| 1's complement | обратный код |
| 2's 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 | узел дерева |
| root node | корневой узел |
| leaf node | листовой узел |
| parent node | родительский узел |
| left-child node | левый дочерний узел |
| right-child node | правый дочерний узел |
| left subtree | левое поддерево |
| right subtree | правое поддерево |
| level | уровень |
| degree | степень |
| height | высота |
| depth | глубина |
| perfect binary tree | идеальное двоичное дерево |
| complete binary tree | совершенное двоичное дерево |
| full binary tree | полное двоичное дерево |
| balanced binary tree | сбалансированное двоичное дерево |
| binary search tree | двоичное дерево поиска |
| balanced binary search tree | сбалансированное двоичное дерево поиска |
| AVL tree | АВЛ-дерево |
| red-black tree | красно-черное дерево |
| level-order traversal | обход по уровням |
| breadth-first traversal | обход в ширину |
| depth-first traversal | обход в глубину |
| 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 ферзях |
| dynamic programming | динамическое программирование |
| initial state | начальное состояние |
| state-transition equation | уравнение перехода состояния |
| knapsack problem | задача о рюкзаке |
| edit distance problem | задача расстояния редактирования |
| greedy algorithm | жадный алгоритм |
| graph | граф |
| vertex | вершина |
| edge | ребро |
| adjacency | смежность |
| path | путь |
| in-degree | входящая степень |
| out-degree | исходящая степень |
| undirected graph | неориентированный граф |
| directed graph | ориентированный граф |
| connected graph | связный граф |
| disconnected graph | несвязный граф |
| weighted graph | взвешенный граф |
| adjacency matrix | матрица смежности |
| adjacency list | список смежности |
| breadth-first search | поиск в ширину |
| depth-first search | поиск в глубину |
| heap | куча |
| min heap | минимальная куча |
| max heap | максимальная куча |
| priority queue | приоритетная очередь |
| heapify | упорядочивание кучи |
| top-k problem | поиск k наибольших элементов |
| balance factor | фактор баланса |