Answer
t.me/python_tesstОтвет:
[1, 5, 18, 22, 99]
Объяснение:
Блинная сортировка очень интересна с математической точки зрения. В самом простом варианте мы в неотстортированной части массива ищем максимальный элемент. Когда максимум найден — делаем два резких разворота. Сначала переворачиваем цепочку элементов так, чтобы максимум оказался на противоположном конце. Затем переворачиваем весь неотсортированный подмассив, в результате чего максимум попадает на своё место.
Код:
def pancake(data):
if len(data) > 1:
for size in range(len(data), 1, -1):
# Позиция максимума в неотсортированной части
maxindex = max(range(size), key = data.__getitem__)
if maxindex + 1 != size:
# Если максимум не слова, то нужно развернуть
if maxindex != 0:
# Переворачиваем так,
# чтобы максимум оказался слева
data[:maxindex+1] = reversed(data[:maxindex+1])
# Переворачиваем неотсортированную часть массива,
# максимум становится на своё место
data[:size] = reversed(data[:size])
return data
random_list_of_nums = [22, 5, 1, 18, 99]
pancake(random_list_of_nums)
print(random_list_of_nums)