кодесурса
«Python

Структуры и алгоритмы данных Python: сортировка списка элементов с использованием сортировки Cocktail shaker

script1adsense2code
script1adsense3code

Поиск и сортировка Python: упражнение 14 с решением

Напишите программу на Python для сортировки списка элементов, используя сортировку Cocktail shaker.
Из Википедии, коктейльный шейкер, [1] также известный как двунаправленная пузырьковая сортировка, [2] коктейльная сортировка, шейкерная сортировка (которая также может относиться к варианту выборочной сортировки), пульсация, случайная сортировка, [3] или челночная сортировка. , является разновидностью пузырьковой сортировки, которая является одновременно алгоритмом стабильной сортировки и сравнительной сортировкой. Алгоритм отличается от пузырьковой сортировки тем, что он сортирует в обоих направлениях при каждом проходе по списку. Этот алгоритм сортировки лишь немного сложнее в реализации, чем пузырьковая сортировка, и он решает проблему черепах в пузырьковых видах. Он обеспечивает лишь незначительные улучшения производительности и не улучшает асимптотическую производительность; Подобно пузырьковой сортировке, она не представляет практического интереса (сортировка вставок предпочтительнее для простых сортировок), хотя она находит некоторое применение в образовании.

Визуализация типа шейкера :

«Python:

Пример решения :

Код Python:

def cocktail_shaker_sort(nums):
    for i in range(len(nums)-1, 0, -1):
        is_swapped = False
        
        for j in range(i, 0, -1):
            if nums[j] < nums[j-1]:
                nums[j], nums[j-1] = nums[j-1], nums[j]
                is_swapped = True
        for j in range(i):
            if nums[j] > nums[j+1]:
                nums[j], nums[j+1] = nums[j+1], nums[j]
                is_swapped = True
        
        if not is_swapped:
            return nums
 
num1 = input('Input comma separated numbers:\n').strip()
nums = [int(item) for item in num1.split(',')]
print(cocktail_shaker_sort(nums))

Пример вывода:

 Введите числа через запятую:
 15, 37, 69, 26, 78 
[15, 26, 37, 69, 78]

Блок - схема:

«Блок-схема:

Редактор кода Python:

Внесите свой код и комментарии через Disqus.

Предыдущая: Напишите программу на Python для сортировки списка элементов с использованием сортировки Gnome.
Далее: Напишите программу на Python для сортировки списка элементов с помощью Comb sort.

Каков уровень сложности этого упражнения?

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code