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)