Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """Суть данного метода состоит в том, что закидывается
- текущий элемент в буфер и сравнивает его с левой частью массива.
- Если находит большие элементы слева, то сдвигает их вправо,
- освобождая место для вставки. Но при этом берёт не всю левую
- часть, а только некоторую группу элементов из неё, где элементы
- разнесены друг от друга на некоторое расстояние"""
- from random import randint, sample
- data = [i for i in range(101)] # Сгенерированный лист от 0 до 100
- work_data = sample(data,
- randint(3, 21)) # Рандомно-выбранные уникальные числа из data в рандомном количестве от 3 до 20
- print("Исходный список:", work_data)
- inc = len(work_data) // 2 # Задаём диапазон сравнения для алгоритма
- while inc:
- for i in range(inc, len(work_data)):
- cur_vel = work_data[i] # Текущее значение
- pos = i # Текущий индекс
- while pos >= inc and work_data[pos - inc] > cur_vel:
- work_data[pos] = work_data[pos - inc] # Меняем сравниваемые элементы местами
- pos -= inc
- work_data[pos] = cur_vel
- inc //= 2 # Задаём диапазон сравнения для алгоритма
- print("Отсортированный список:", work_data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement