mirror of
https://github.com/krahets/hello-algo.git
synced 2026-05-04 23:22:27 +08:00
442 lines
18 KiB
Markdown
442 lines
18 KiB
Markdown
# Приложение
|
||
|
||
{width="4.072915573053368in" height="5.270833333333333in"}
|
||
|
||
###### Содержание главы
|
||
|
||
1. Установка программной среды
|
||
|
||
2. Совместная разработка
|
||
|
||
3. Глоссарий
|
||
|
||
#### Установка программной среды
|
||
|
||
1. **Установка IDE**
|
||
|
||
> Рекомендуется использовать открытую и быструю интегрированную среду разработки (IDE) VS Code. Откройте официальный сайт VS Code и выберите подходящую вашей операционной системе версию для загрузки и установки.
|
||
|
||

|
||
|
||
> **Рис. 16.1.** Загрузка VS Code с официального сайта
|
||
>
|
||
> VS Code обладает мощной экосистемой расширений и поддерживает выпол- нение и отладку большинства языков программирования. Например, после установки расширения Python Extension Pack можно выполнять отладку кода на Python. Этапы установки показаны на рис. 16.2.
|
||
|
||
1. Установка программной среды ❖ **485**
|
||
|
||
> **Рис. 16.2.** Установка расширений в VS Code
|
||
|
||
### Установка языковой среды
|
||
|
||
##### Среда Python
|
||
|
||
1. Загрузите и установите инструмент Miniconda3, требуется Python 3.10 или более поздняя версия.
|
||
|
||
2. В магазине расширений VS Code выполните поиск по слову python и уста- новите расширение Python Extension Pack.
|
||
|
||
3. (Не обязательно) Введите в командной строке pip install black для уста- новки инструмента форматирования кода.
|
||
|
||
##### Среда C/C++
|
||
|
||
1. В системе Windows необходимо установить набор инструментов MinGW (руководство по настройке). В MacOS имеется встроенный компилятор Clang, дополнительная установка не требуется.
|
||
|
||
2. В магазине расширений VS Code выполните поиск по слову c++ и устано- вите расширение C/C++ Extension Pack.
|
||
|
||
3. (Не обязательно) Откройте страницу настроек, найдите параметр фор- матирования кода Clang_format_fallback Style и установите его в значе- ние { BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }.
|
||
|
||
##### Среда Java
|
||
|
||
1. Загрузите и установите OpenJDK (версия \> JDK 9).
|
||
|
||
2. В магазине расширений VS Code выполните поиск по слову java и уста- новите расширение Extension Pack for Java.
|
||
|
||
##### Среда C#
|
||
|
||
1. Загрузите и установите .Net 8.0.
|
||
|
||
2. В магазине расширений VS Code выполните поиск по фразе C# Dev Kit
|
||
|
||
> и установите расширение C# Dev Kit (руководство по настройке).
|
||
|
||
3. Также можно использовать интегрированную среду разработки Visual Studio (руководство по установке).
|
||
|
||
##### Среда Go
|
||
|
||
1. Загрузите и установите Go.
|
||
|
||
2. В магазине расширений VS Code выполните поиск по слову go и устано- вите Go.
|
||
|
||
3. Нажмите сочетание клавиш Ctrl + Shift + P, чтобы открыть командную строку. Введите команду go, выберите Go: Install/Update Tools, отметьте все и установите.
|
||
|
||
##### Среда Swift
|
||
|
||
1. Загрузите и установите Swift.
|
||
|
||
2. В магазине расширений VS Code выполните поиск по слову swift и уста- новите расширение Swift for Visual Studio Code.
|
||
|
||
##### Среда JavaScript
|
||
|
||
1. Загрузите и установите Node.js.
|
||
|
||
2. (Не обязательно) В магазине расширений VS Code выполните поиск по слову Prettier и установите инструмент форматирования кода.
|
||
|
||
##### Среда TypeScript
|
||
|
||
1. Выполните шаги установки для среды JavaScript.
|
||
|
||
2. Установите TypeScript Execute (tsx).
|
||
|
||
3. В магазине расширений VS Code выполните поиск по слову typescript
|
||
|
||
> и установите расширение Pretty TypeScript Errors.
|
||
|
||
##### Среда Dart
|
||
|
||
1. Загрузите и установите Dart.
|
||
|
||
2. В магазине расширений VS Code выполните поиск по слову dart и уста- новите расширение Dart.
|
||
|
||
##### Среда Rust
|
||
|
||
1. Загрузите и установите Rust.
|
||
|
||
2. В магазине расширений VS Code выполните поиск по слову rust и уста- новите расширение rust-analyzer.
|
||
|
||
#### Совместная разработка
|
||
|
||
> Ввиду ограниченных возможностей автора в книге неизбежно присутству- ют некоторые упущения и ошибки, просим отнестись к этому с пониманием. Если вы обнаружите опечатки, неработающие ссылки, неполное содержание,
|
||
|
||
2. Совместная разработка ❖ **487**
|
||
|
||
> двусмысленности в тексте, неясные объяснения или нерациональную структу- ру изложения, пожалуйста, помогите нам в исправлении, чтобы предоставить читателям более качественные учебные ресурсы.
|
||
>
|
||
> Все идентификаторы GitHub авторов будут представлены на странице ре- позитория книги, в веб-версии и PDF-версии в знак благодарности за их бес- корыстный вклад в сообщество с открытым исходным кодом.
|
||
|
||
##### Небольшая корректировка содержимого
|
||
|
||
> В правом верхнем углу каждой страницы есть значок редактирования, как по- казано на рис. 16.3. Следуйте следующим шагам для изменения текста или кода.
|
||
|
||
1. Нажмите на значок редактирования. Если появится сообщение «Необходи- мо создать ответвление этого репозитория», согласитесь на это действие.
|
||
|
||
2. Измените содержимое исходного файла Markdown, проверьте правиль- ность содержания и постарайтесь сохранить единый формат оформления.
|
||
|
||
3. В нижней части страницы заполните описание изменений, затем на- жмите кнопку **Propose file change** (предложить изменение файла). После перехода на следующую страницу нажмите кнопку **Create pull request** (Создать запрос на слияние), чтобы инициировать запрос на слияние.
|
||
|
||

|
||
|
||
> **Рис. 16.3.** Кнопка редактирования страницы
|
||
>
|
||
> Изображения нельзя изменить напрямую, необходимо создать новую Issue (Задачу) или оставить комментарий для описания проблемы. Мы как можно быстрее изменим и обновим изображение.
|
||
|
||
##### Создание содержимого
|
||
|
||
> Если вы заинтересованы в участии в этом проекте с открытым исходным ко- дом, включая перевод кода на другие языки программирования, расширение содержания статей и т. д., необходимо выполнить следующий рабочий процесс Pull Request (Запрос на слияние).
|
||
|
||
1. Войдите в GitHub, создайте ответвление хранилища кода книги в свой личный аккаунт.
|
||
|
||
2. Перейдите на страницу ответвления и используйте команду git clone
|
||
|
||
> для клонирования хранилища на локальный компьютер.
|
||
|
||
3. На локальном компьютере создайте содержимое и проведите полное те- стирование, чтобы проверить правильность кода.
|
||
|
||
4. Зафиксируйте изменения, сделанные локально, затем отправьте их в удаленное хранилище.
|
||
|
||
5. Обновите страницу хранилища и нажмите кнопку **Create pull request**
|
||
|
||
> (Создать запрос на слияние), чтобы инициировать запрос на слияние.
|
||
|
||
##### Развертывание Docker
|
||
|
||
> В корневом каталоге hello-algo выполните следующий сценарий Docker, чтобы настроить доступ к проекту по адресу http://localhost:8000:
|
||
>
|
||
> docker-compose up -d
|
||
>
|
||
> Для удаления развертывания выполните следующую команду:
|
||
>
|
||
> docker-compose down
|
||
|
||
#### Глоссарий
|
||
|
||
> В табл. 16.1 приведен англо-русский словарь важных терминов, встречающих- ся в книге. Он поможет вам в чтении англоязычной литературы.
|
||
>
|
||
> **Таблица 16.1.** Англо-русский словарь терминов 1's complement обратный код
|
||
>
|
||
> 2's complement дополнительный код
|
||
>
|
||
> adjacency смежность
|
||
>
|
||
> adjacency list список смежности
|
||
>
|
||
> adjacency matrix матрица смежности
|
||
>
|
||
> algorithm алгоритм
|
||
>
|
||
> array массив
|
||
>
|
||
> asymptotic complexity analysis асимптотический анализ сложности
|
||
>
|
||
> asymptotic upper bound асимптотическая верхняя граница AVL tree АВЛ-дерево
|
||
>
|
||
> backtracking algorithm алгоритм обратного поиска
|
||
>
|
||
> balance factor фактор баланса
|
||
>
|
||
> balanced binary search tree сбалансированное двоичное дерево поиска balanced binary tree сбалансированное двоичное дерево
|
||
>
|
||
> big-O notation обозначение «О» большое
|
||
>
|
||
> binary search двоичный поиск
|
||
>
|
||
> binary search tree двоичное дерево поиска
|
||
>
|
||
> binary tree двоичное дерево
|
||
>
|
||
> bottom of the stack основание стека
|
||
>
|
||
> breadth-first search поиск в ширину
|
||
>
|
||
> breadth-first traversal обход в ширину
|
||
>
|
||
> bubble sort сортировка пузырьком
|
||
>
|
||
> bucket корзина
|
||
>
|
||
> bucket sort блочная сортировка
|
||
>
|
||
> cache hit rate коэффициент попадания в кеш
|
||
>
|
||
> cache memory кеш-память
|
||
>
|
||
> cache miss промах кеша
|
||
>
|
||
> code код
|
||
>
|
||
> complete binary tree совершенное двоичное дерево
|
||
>
|
||
> connected graph связный граф
|
||
>
|
||
> constraint ограничение
|
||
>
|
||
> counting sort сортировка подсчетом
|
||
>
|
||
> data structure структура данных
|
||
>
|
||
> degree степень
|
||
>
|
||
> depth глубина
|
||
>
|
||
> depth-first search поиск в глубину
|
||
>
|
||
> depth-first traversal обход в глубину
|
||
>
|
||
> directed graph ориентированный граф
|
||
>
|
||
> disconnected graph несвязный граф
|
||
>
|
||
> divide and conquer разделяй и властвуй
|
||
>
|
||
> double-ended queue двусторонняя очередь
|
||
>
|
||
> dynamic array динамический массив
|
||
>
|
||
> dynamic programming динамическое программирование
|
||
>
|
||
> edge ребро
|
||
>
|
||
> edit distance problem задача расстояния редактирования
|
||
>
|
||
> file файл
|
||
>
|
||
> front of the queue голова очереди
|
||
>
|
||
> full binary tree полное двоичное дерево
|
||
>
|
||
> function функция
|
||
>
|
||
> graph граф
|
||
>
|
||
> greedy algorithm жадный алгоритм
|
||
>
|
||
> hanota problem задача о Ханойских башнях
|
||
>
|
||
> hard disk жесткий диск
|
||
>
|
||
> hash collision хеш-коллизия
|
||
>
|
||
> hash function хеш-функция
|
||
>
|
||
> hash set хеш-набор
|
||
>
|
||
> hash table хеш-таблица
|
||
>
|
||
> head node головной узел
|
||
>
|
||
> heap куча
|
||
>
|
||
> heap sort пирамидальная сортировка
|
||
>
|
||
> heapify упорядочивание кучи
|
||
>
|
||
> height высота
|
||
>
|
||
> in-degree входящая степень
|
||
>
|
||
> index индекс
|
||
>
|
||
> initial state начальное состояние
|
||
>
|
||
> insertion sort сортировка вставкой
|
||
>
|
||
> iteration итерация
|
||
>
|
||
> knapsack problem задача о рюкзаке
|
||
>
|
||
> lazy deletion ленивое удаление
|
||
>
|
||
> leaf node листовой узел
|
||
>
|
||
> left subtree левое поддерево
|
||
>
|
||
> left-child node левый дочерний узел
|
||
>
|
||
> level уровень
|
||
>
|
||
> level-order traversal обход по уровням
|
||
>
|
||
> linear probing линейное зондирование
|
||
>
|
||
> linked list связный список
|
||
>
|
||
> linked list node, list node узел связного списка, узел списка list список
|
||
>
|
||
> load factor коэффициент заполнения
|
||
>
|
||
> loop цикл
|
||
>
|
||
> max heap максимальная куча
|
||
>
|
||
> merge sort сортировка слиянием
|
||
>
|
||
> method метод
|
||
>
|
||
> min heap минимальная куча
|
||
>
|
||
> n-queens problem задача об n ферзях
|
||
>
|
||
> open addressing открытая адресация
|
||
>
|
||
> out-degree исходящая степень
|
||
>
|
||
> parent node родительский узел
|
||
>
|
||
> path путь
|
||
>
|
||
> perfect binary tree идеальное двоичное дерево
|
||
>
|
||
> permutations problem задача о перестановках
|
||
>
|
||
> priority queue приоритетная очередь
|
||
>
|
||
> pruning обрезка
|
||
>
|
||
> queue очередь
|
||
>
|
||
> quick sort быстрая сортировка
|
||
>
|
||
> radix sort поразрядная сортировка
|
||
>
|
||
> random-access memory (RAM) оперативное запоминающее устройство (ОЗУ), опера-
|
||
>
|
||
> тивная память
|
||
>
|
||
> rear of the queue хвост очереди
|
||
>
|
||
> recursion рекурсия
|
||
>
|
||
> recursion tree дерево рекурсии
|
||
>
|
||
> red-black tree красно-черное дерево
|
||
>
|
||
> right subtree правое поддерево
|
||
>
|
||
> right-child node правый дочерний узел
|
||
>
|
||
> root node корневой узел
|
||
>
|
||
> searching algorithm алгоритм поиска
|
||
>
|
||
> selection sort сортировка выбором
|
||
>
|
||
> separate chaining цепная адресация
|
||
>
|
||
> sign-magnitude прямой код
|
||
>
|
||
> solution решение
|
||
>
|
||
> sorting algorithm алгоритм сортировки
|
||
>
|
||
> space complexity пространственная сложность
|
||
>
|
||
> stack куча
|
||
>
|
||
> state состояние
|
||
>
|
||
> state-transition equation уравнение перехода состояния subset-sum problem задача о сумме подмножеств
|
||
>
|
||
> tail node хвостовой узел
|
||
>
|
||
> tail recursion хвостовая рекурсия
|
||
>
|
||
> time complexity временная сложность
|
||
>
|
||
> top of the stack вершина стека
|
||
>
|
||
> top-k problem поиск k наибольших элементов
|
||
>
|
||
> tree node узел дерева
|
||
>
|
||
> undirected graph неориентированный граф
|
||
>
|
||
> variable переменная
|
||
>
|
||
> vertex вершина
|
||
>
|
||
> weighted graph взвешенный граф
|
||
>
|
||
> Книги издательства «ДМК Пресс» можно купить оптом и в розницу на складе издательства по адресу:
|
||
>
|
||
> Москва, ул. Электродная, д. 2, стр. 12, офис 7,
|
||
>
|
||
> тел. **+7 (499) 322--19--38**,
|
||
>
|
||
> а также заказать на сайте [**www.dmkpress.com**](http://www.dmkpress.com/)
|
||
>
|
||
> с доставкой в любой регион РФ.
|
||
|
||
##### Цзинь Юйдун (@krahets)
|
||
|
||
> **Алгоритмы и структуры данных с примерами на Python**
|
||
>
|
||
> Главный редактор *Мовчан Д. А.*
|
||
>
|
||
> Зам. главного редактора *Яценков В. С.*
|
||
>
|
||
> <editor@dmkpress.com>
|
||
>
|
||
> Перевод *Шевкун И. А.*
|
||
>
|
||
> Корректор *Абросимова Л. А.*
|
||
>
|
||
> Верстка *Луценко С. В.*
|
||
>
|
||
> Дизайн обложки *Трофимова С. В.*
|
||
>
|
||
> Формат 70×100 1/16.
|
||
>
|
||
> Гарнитура «PT Serif». Печать цифровая.
|
||
>
|
||
> Усл. печ. л. 40,14. Тираж 100 экз.
|
||
>
|
||
> Веб-сайт издательства: [www.dmkpress.com](http://www.dmkpress.com/)
|