Условие: Метод сортировки слияние. Выводить каждый шаг: примерно так: print(f'Массив после {r} - ой итерации: ', *c)
Весь код есть, но нумерацию вывода шага, как появляется новый массив не могу написать.
мой код:
Мой результат: но должно быть по другому. Заранее спасибо.
Весь код есть, но нумерацию вывода шага, как появляется новый массив не могу написать.
мой код:
Python:
print('Метод сортировки слияние')
# Функция должна объединить два списка.
def two_list(a,b):
r = 0
c = [] # Список, в который будем помещать сортированные элементы.
i = j = 0 # Два указателя, которые будут указывать на первые элементы a и b.
while i < len(a) and j < len(b): # Цикл, пока i не привысит длины списка a и пока j не привысит длины списка b.
if a[i] < b[j]: # Если элемент a меньше элемента b, то добавляем в список c этот(элемент а) элемент.
c.append(a[i])
i+=1 # Двигаем указатель i(точнее прибалем 1), чтобы перейти к следующему элементу.
r+=1
print(f'Массив после {r} - ой итерации: ', *a)
else: # Если элемент a больше элемента b, то помещаем в список элемент b.
c.append(b[j])
j+=1 # Двигаем указатель j(точнее прибавлем 1), чтобы перейти к следующему элементу.
r+=1
print(f'Массив после {r} - ой итерации: ', *b)
if i<len(a): # Если i не достиг конца длины а, то мы в список с добавлем все, что находилось в а с индексом i и до конца списка а.
c+=a[i:]
if j<len(b): # Если j не достиг конца длины b, то мы в список с добавлем все, что находилось в b с индексом j и до конца списка а.
c+=b[j:]
return c # Возвращаем список с.
s = list(map(int, input("Введите элементы: ").split()))
# Функция должна выполнить сортровку.
def sort(s):
if len(s) == 1: # Если длина списка = 1, то значит, список отосртирован и состоит из 1 элемента.
return s # Возвращаем элемент.
middle = len(s)//2 # Если условие не выполняется, то находим середину списка. Длина списка деленная нацело пополам.
left = sort(s[:middle]) # Узнаем левую часть списка, то есть от начала спика до середины(middle).
right = sort(s[middle:])# Узнаем правую часть списка, то есть от середины до конца списка.
return two_list(left, right) # Объединяем обе эти части, после сортировки.
print("Результат:", *sort(s))