кодесурса
«Python

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

script1adsense2code
script1adsense3code

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

Напишите программу на Python для сортировки списка элементов с использованием сортировки Gnome.
Сортировка гномов - это алгоритм сортировки, первоначально предложенный доктором Хамидом Сарбази-Азадом (профессором вычислительной техники в Шарифском технологическом университете) в 2000 году и названный «глупой сортировкой» (не путать с богосортом), а затем описанный Диком. Грун и назвал "гномом рода". Алгоритм всегда находит первое место, где два соседних элемента находятся в неправильном порядке, и меняет их местами. Он использует тот факт, что выполнение обмена может привести к появлению новой неупорядоченной соседней пары только рядом с двумя замененными элементами.

Визуализация вида гномов :

«Python:

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

Код Python:

def  gnome_sort(nums):
    if len(nums) <= 1:
        return nums
        
    i = 1
    
    while i < len(nums):
        if nums[i-1] <= nums[i]:
            i += 1
        else:
            nums[i-1], nums[i] = nums[i], nums[i-1]
            i -= 1
            if (i == 0):
                i = 1
           
user_input = input("Input numbers separated by a comma:\n").strip()
nums = [int(item) for item in user_input.split(',')]
gnome_sort(nums)
print(nums)

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

 Введите числа, разделенные запятой:
 5, 79, 35, 68, 25
[5, 25, 35, 68, 79]

Блок - схема:

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

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

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

Предыдущий: Напишите программу на Python для сортировки списка элементов, используя сортировку Bogosort.
Далее: Напишите программу на Python для сортировки списка элементов, используя сортировку Cocktail shaker.

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

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code