Условия задачи:
Изучите и напишите алгоритм сортировки, но не пузырьковой, сортировки вставками или сортировки слиянием.
Решение задачи:
def insert_sorting(list_):
for i in range(1, len(list_)): # Начинаем со второго элемента
value = list_[i] # Текущий элемент для вставки
while i > 0 and list_[i-1] > value: # Пока предыдущий элемент больше
list_[i] = list_[i-1] # Сдвигаем элемент вправо
i -= 1 # Двигаемся влево по отсортированной части
list_[i] = value # Вставляем `value` на найденное место
return list_
def merge_sort(list_):
if len(list_) > 1:
mid = len(list_) // 2
left = list_[:mid]
rigth = list_[mid:]
merge_sort(left)
merge_sort(rigth)
left_lst = 0
rigth_lst = 0
list_lst = 0
while len(left) > left_lst and len(rigth) > rigth_lst:
if left[left_lst] >= rigth[rigth_lst]:
list_[list_lst] = rigth[rigth_lst]
rigth_lst += 1
else:
list_[list_lst] = left[left_lst]
left_lst += 1
list_lst += 1
while len(left) > left_lst:
list_[list_lst] = left[left_lst]
left_lst += 1
list_lst += 1
while len(rigth) > rigth_lst:
list_[list_lst] = rigth[rigth_lst]
rigth_lst += 1
list_lst += 1
return list_