mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-11 23:16:07 +00:00
First version.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
# Совместная разработка
|
||||
|
||||
Ввиду ограниченных возможностей автора в книге неизбежно присутствуют некоторые упущения и ошибки, просим отнестись к этому с пониманием. Если вы обнаружите опечатки, неработающие ссылки, неполное содержание, двусмысленности в тексте, неясные объяснения или нерациональную структуру изложения, пожалуйста, помогите нам в исправлении, чтобы предоставить читателям более качественные учебные ресурсы.
|
||||
|
||||
Все идентификаторы GitHub авторов будут представлены на странице репозитория книги, в веб-версии и PDF-версии в знак благодарности за их бескорыстный вклад в сообщество с открытым исходным кодом.
|
||||
|
||||
### Небольшая корректировка содержимого
|
||||
|
||||
В правом верхнем углу каждой страницы есть значок редактирования, как показано на рис. 16.3. Следуйте следующим шагам для изменения текста или кода.
|
||||
|
||||
1. Нажмите на значок редактирования. Если появится сообщение «Необходимо создать ответвление этого репозитория», согласитесь на это действие.
|
||||
2. Измените содержимое исходного файла Markdown, проверьте правильность содержания и постарайтесь сохранить единый формат оформления.
|
||||
3. В нижней части страницы заполните описание изменений, затем нажмите кнопку **Propose file change** (предложить изменение файла). После перехода на следующую страницу нажмите кнопку **Create pull request** (Создать запрос на слияние), чтобы инициировать запрос на слияние.
|
||||
|
||||

|
||||
|
||||
Изображения нельзя изменить напрямую, необходимо создать новую 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
|
||||
```
|
||||
@@ -0,0 +1,3 @@
|
||||
# Приложение
|
||||
|
||||

|
||||
@@ -0,0 +1,68 @@
|
||||
# Установка программной среды
|
||||
|
||||
## Установка IDE
|
||||
|
||||
Рекомендуется использовать открытую и быструю интегрированную среду разработки (IDE) VS Code. Откройте [официальный сайт VS Code](https://code.visualstudio.com/) и выберите подходящую вашей операционной системе версию для загрузки и установки.
|
||||
|
||||

|
||||
|
||||
VS Code обладает мощной экосистемой расширений и поддерживает выполнение и отладку большинства языков программирования. Например, после установки расширения Python Extension Pack можно выполнять отладку кода на Python. Этапы установки показаны на рисунке ниже.
|
||||
|
||||

|
||||
|
||||
## Установка языковой среды
|
||||
|
||||
### Среда 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).
|
||||
@@ -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 | фактор баланса |
|
||||
Reference in New Issue
Block a user