mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-20 10:36:09 +00:00
Review the ru version with Codex. (#1870)
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
|
||||
### Инициализация списка
|
||||
|
||||
Обычно мы используем два способа инициализации: "без начальных значений" и "с начальными значениями":
|
||||
Обычно используются два способа инициализации: без начальных значений и с начальными значениями:
|
||||
|
||||
=== "Python"
|
||||
|
||||
@@ -153,7 +153,7 @@
|
||||
|
||||
### Доступ к элементам
|
||||
|
||||
Список по своей сути является массивом, поэтому доступ к элементам и их обновление можно выполнять за $O(1)$ времени, что очень эффективно.
|
||||
Поскольку в этом разделе список рассматривается как структура на основе динамического массива, доступ к элементам и их обновление можно выполнять за $O(1)$ времени, что очень эффективно.
|
||||
|
||||
=== "Python"
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
|
||||
### Вставка и удаление элементов
|
||||
|
||||
По сравнению с массивами список позволяет свободно добавлять и удалять элементы. Добавление элемента в конец списка имеет временную сложность $O(1)$ , но операции вставки и удаления по-прежнему имеют ту же эффективность, что и у массива, то есть $O(n)$ .
|
||||
В отличие от массива список позволяет свободно добавлять и удалять элементы. Добавление элемента в конец списка имеет временную сложность $O(1)$ , но операции вставки и удаления по-прежнему имеют ту же эффективность, что и у массива, то есть $O(n)$ .
|
||||
|
||||
=== "Python"
|
||||
|
||||
@@ -739,7 +739,7 @@
|
||||
|
||||
### Конкатенация списков
|
||||
|
||||
Если дан новый список `nums1` , мы можем присоединить его к хвосту исходного списка.
|
||||
Создав новый список `nums1` , мы можем присоединить его к хвосту исходного списка.
|
||||
|
||||
=== "Python"
|
||||
|
||||
@@ -850,7 +850,7 @@
|
||||
|
||||
### Сортировка списка
|
||||
|
||||
После сортировки списка мы сможем применять алгоритмы "бинарный поиск" и "два указателя", которые очень часто встречаются в задачах по массивам.
|
||||
После сортировки списка мы сможем применять алгоритмы "двоичный поиск" и "два указателя", которые очень часто встречаются в задачах по массивам.
|
||||
|
||||
=== "Python"
|
||||
|
||||
@@ -948,12 +948,12 @@
|
||||
|
||||
## Реализация списка
|
||||
|
||||
Во многих языках программирования списки встроены в стандартную библиотеку, например в Java, C++ и Python. Их реализация довольно сложна, а настройки параметров тщательно продуманы: начальная емкость, коэффициент расширения и так далее. Если тебе интересно, стоит заглянуть в исходный код.
|
||||
Во многих языках программирования списки встроены в стандартную библиотеку, например в Java, C++, Python и других языках. Их реализация довольно сложна, а настройки параметров тщательно продуманы: начальная емкость, коэффициент расширения и так далее. Если это интересно, стоит заглянуть в исходный код.
|
||||
|
||||
Чтобы лучше понять принцип работы списка, попробуем реализовать его упрощенную версию, в которой есть три ключевых аспекта проектирования.
|
||||
|
||||
- **Начальная емкость**: выбрать разумную начальную емкость внутреннего массива. В этом примере мы берем 10.
|
||||
- **Учет количества элементов**: объявить переменную `size` , которая будет хранить текущее число элементов в списке и обновляться в реальном времени при вставке и удалении элементов. С помощью этой переменной можно находить конец списка и понимать, требуется ли расширение.
|
||||
- **Учет количества элементов**: объявить переменную `size` , которая будет хранить текущее число элементов в списке и обновляться в реальном времени при вставке и удалении элементов. С помощью этой переменной можно определять конец списка и понимать, требуется ли расширение.
|
||||
- **Механизм расширения**: если при вставке элементов емкость списка исчерпана, нужно выполнить расширение. Для этого сначала создается больший массив с учетом коэффициента расширения, а затем все элементы текущего массива по порядку переносятся в новый. В этом примере мы считаем, что каждый раз массив расширяется в 2 раза.
|
||||
|
||||
```src
|
||||
|
||||
Reference in New Issue
Block a user