Answer

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)


Report Page