Алгосы

This commit is contained in:
ip-ram
2026-01-20 09:34:05 +05:00
parent ff275c125b
commit f9bbb8d83a
16 changed files with 99 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
Усовершенствованный вариант сортировки вставками. Идея метода Шелла состоит в сравнении элементов, стоящих не только рядом, но и на определённом расстоянии друг от друга. Иными словами — это сортировка вставками с предварительными «грубыми» проходами. [Сложность алгоритма](Оценка%20сложности%20алгоритма) $O(n^2)$
#### Алгоритм
При сортировке Шелла сначала сравниваются и сортируются между собой значения, стоящие один от другого на некотором расстоянии $d$. После этого процедура повторяется для некоторых меньших значений $d$, а завершается сортировка Шелла упорядочиванием элементов при $d=1$. Эффективность сортировки Шелла в определённых случаях обеспечивается тем, что элементы «быстрее» встают на свои места.
#### Пример
![[sort_shell.gif]]
#### В виде кода
```python
def shell_sort(data: list[int]) -> list[int]:
last_index = len(data)
step = len(data)//2
while step > 0:
for i in range(step, last_index, 1):
j = i
delta = j - step
while delta >= 0 and data[delta] > data[j]:
data[delta], data[j] = data[j], data[delta]
j = delta
delta = j - step
step //= 2
return data
```