mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-05 20:24:19 +00:00
build
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
---
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 16.2 Присоединяйтесь к созданию книги
|
||||
|
||||
Возможности автора ограничены, поэтому в книге неизбежно могут встречаться упущения и ошибки. Просим отнестись к этому с пониманием. Если вы заметите опечатки, неработающие ссылки, пропуски в содержании, двусмысленные формулировки, неясные объяснения или неудачную структуру изложения, пожалуйста, помогите нам это исправить, чтобы читатели получили более качественный учебный ресурс.
|
||||
|
||||
GitHub ID всех [участников](https://github.com/krahets/hello-algo/graphs/contributors) будут указаны на главных страницах репозитория книги, веб-версии и PDF-версии в знак благодарности за их бескорыстный вклад в сообщество открытого исходного кода.
|
||||
|
||||
!!! success "Сила открытого исходного кода"
|
||||
|
||||
Интервал между двумя тиражами бумажной книги обычно довольно велик, поэтому обновлять содержание очень неудобно.
|
||||
|
||||
В этой же открытой книге цикл обновления содержания сокращается до нескольких дней, а иногда даже до нескольких часов.
|
||||
|
||||
### 1. Небольшие правки содержания
|
||||
|
||||
Как показано на рисунке 16-3, в правом верхнем углу каждой страницы есть "значок редактирования". Вы можете изменить текст или код следующим образом.
|
||||
|
||||
1. Нажмите на "значок редактирования". Если появится сообщение "You need to fork this repository", согласитесь с этим действием.
|
||||
2. Измените содержимое исходного Markdown-файла, проверьте корректность правок и постарайтесь сохранить единый стиль оформления.
|
||||
3. Внизу страницы заполните описание изменений, затем нажмите кнопку "Propose file change". После перехода на следующую страницу нажмите кнопку "Create pull request", чтобы создать pull request.
|
||||
|
||||
{ class="animation-figure" }
|
||||
|
||||
<p align="center"> Рисунок 16-3 Кнопка редактирования страницы </p>
|
||||
|
||||
Изображения нельзя изменить напрямую, поэтому проблему с ними нужно описывать через новый [Issue](https://github.com/krahets/hello-algo/issues) или комментарий. Мы постараемся как можно быстрее перерисовать и заменить изображение.
|
||||
|
||||
### 2. Создание содержания
|
||||
|
||||
Если вам интересно участвовать в этом проекте с открытым исходным кодом, например переводить код на другие языки программирования или расширять содержание статей, то следует придерживаться следующего рабочего процесса 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.
|
||||
|
||||
### 3. Развертывание Docker
|
||||
|
||||
В корневом каталоге `hello-algo` выполните следующий Docker-скрипт, после чего проект будет доступен по адресу `http://localhost:8000`:
|
||||
|
||||
```shell
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Удалить развертывание можно следующей командой:
|
||||
|
||||
```shell
|
||||
docker-compose down
|
||||
```
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
comments: true
|
||||
icon: material/help-circle-outline
|
||||
---
|
||||
|
||||
# Глава 16. Приложение
|
||||
|
||||
{ class="cover-image" }
|
||||
|
||||
## Содержание главы
|
||||
|
||||
- [16.1 Установка среды программирования](installation.md)
|
||||
- [16.2 Присоединяйтесь к созданию книги](contribution.md)
|
||||
- [16.3 Глоссарий](terminology.md)
|
||||
@@ -0,0 +1,76 @@
|
||||
---
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 16.1 Установка среды программирования
|
||||
|
||||
## 16.1.1 Установка IDE
|
||||
|
||||
В качестве локальной интегрированной среды разработки (IDE) рекомендуется использовать открытую и легковесную VS Code. Перейдите на [официальный сайт VS Code](https://code.visualstudio.com/), выберите версию для своей операционной системы и установите ее.
|
||||
|
||||
{ class="animation-figure" }
|
||||
|
||||
<p align="center"> Рисунок 16-1 Загрузка VS Code с официального сайта </p>
|
||||
|
||||
VS Code обладает мощной экосистемой расширений и поддерживает запуск и отладку большинства языков программирования. Например, после установки расширения "Python Extension Pack" можно отлаживать код на Python. Процесс установки показан на рисунке 16-2.
|
||||
|
||||
{ class="animation-figure" }
|
||||
|
||||
<p align="center"> Рисунок 16-2 Установка расширений VS Code </p>
|
||||
|
||||
## 16.1.2 Установка языковой среды
|
||||
|
||||
### 1. Среда 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`, чтобы установить инструмент форматирования кода.
|
||||
|
||||
### 2. Среда 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 }`.
|
||||
|
||||
### 3. Среда Java
|
||||
|
||||
1. Загрузите и установите [OpenJDK](https://jdk.java.net/18/) (требуемая версия: > JDK 9).
|
||||
2. В магазине расширений VS Code найдите `java` и установите Extension Pack for Java.
|
||||
|
||||
### 4. Среда 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)).
|
||||
|
||||
### 5. Среда Go
|
||||
|
||||
1. Загрузите и установите [go](https://go.dev/dl/).
|
||||
2. В магазине расширений VS Code найдите `go` и установите Go.
|
||||
3. Нажмите `Ctrl + Shift + P`, чтобы открыть командную палитру, введите `go`, выберите `Go: Install/Update Tools`, отметьте все инструменты и установите их.
|
||||
|
||||
### 6. Среда 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).
|
||||
|
||||
### 7. Среда JavaScript
|
||||
|
||||
1. Загрузите и установите [Node.js](https://nodejs.org/en/).
|
||||
2. (Необязательно) В магазине расширений VS Code найдите `Prettier` и установите инструмент форматирования кода.
|
||||
|
||||
### 8. Среда 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).
|
||||
|
||||
### 9. Среда Dart
|
||||
|
||||
1. Загрузите и установите [Dart](https://dart.dev/get-dart).
|
||||
2. В магазине расширений VS Code найдите `dart` и установите [Dart](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code).
|
||||
|
||||
### 10. Среда 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).
|
||||
@@ -0,0 +1,145 @@
|
||||
---
|
||||
comments: true
|
||||
---
|
||||
|
||||
# 16.3 Глоссарий
|
||||
|
||||
В таблице 16-1 перечислены важные термины, встречающиеся в книге. Обратите внимание на следующие моменты.
|
||||
|
||||
- Рекомендуем запомнить английские названия терминов, чтобы легче читать англоязычную литературу.
|
||||
- В русской версии приводится единый рекомендуемый перевод каждого термина.
|
||||
|
||||
<p align="center"> Таблица 16-1 Важные термины по структурам данных и алгоритмам </p>
|
||||
|
||||
<div class="center-table" markdown>
|
||||
|
||||
| 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$ |
|
||||
| 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 | узел дерева |
|
||||
| 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$ наибольших элементов |
|
||||
| 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$ ферзях |
|
||||
| dynamic programming | динамическое программирование |
|
||||
| initial state | начальное состояние |
|
||||
| state-transition equation | уравнение перехода состояния |
|
||||
| knapsack problem | задача о рюкзаке |
|
||||
| edit distance problem | задача о расстоянии редактирования |
|
||||
| greedy algorithm | жадный алгоритм |
|
||||
|
||||
</div>
|
||||
Reference in New Issue
Block a user