Advertisement
_RayBoy_

1.4 Сортировка методом Шелла

Feb 18th, 2022
520
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.69 KB | None | 0 0
  1. """Суть данного метода состоит в том, что закидывается
  2.   текущий элемент в буфер и сравнивает его с левой частью массива.
  3.   Если находит большие элементы слева, то сдвигает их вправо,
  4.   освобождая место для вставки. Но при этом берёт не всю левую
  5.   часть, а только некоторую группу элементов из неё, где элементы
  6.   разнесены друг от друга на некоторое расстояние"""
  7.  
  8. from random import randint, sample
  9.  
  10. data = [i for i in range(101)]  # Сгенерированный лист от 0 до 100
  11. work_data = sample(data,
  12.                    randint(3, 21))  # Рандомно-выбранные уникальные числа из data в рандомном количестве от 3 до 20
  13. print("Исходный список:", work_data)
  14.  
  15. inc = len(work_data) // 2  # Задаём диапазон сравнения для алгоритма
  16. while inc:
  17.     for i in range(inc, len(work_data)):
  18.         cur_vel = work_data[i]  # Текущее значение
  19.         pos = i  # Текущий индекс
  20.  
  21.         while pos >= inc and work_data[pos - inc] > cur_vel:
  22.             work_data[pos] = work_data[pos - inc]  # Меняем сравниваемые элементы местами
  23.             pos -= inc
  24.             work_data[pos] = cur_vel
  25.  
  26.     inc //= 2  # Задаём диапазон сравнения для алгоритма
  27.  
  28. print("Отсортированный список:", work_data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement