кодесурса
«Python

Структуры и алгоритмы данных Python: сортировка слиянием

script1adsense2code
script1adsense3code

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

Напишите программу на Python для сортировки списка элементов с использованием алгоритма сортировки слиянием.
Примечание. Согласно Википедии «Сортировка слиянием (также обычно пишется слиянием) является алгоритмом сортировки на основе сравнения O (n log n). Большинство реализаций производят стабильную сортировку, что означает, что реализация сохраняет порядок ввода равных элементов в отсортированной выход."

Алгоритм:

Концептуально сортировка слиянием работает следующим образом:

  • Разделите несортированный список на n подсписков, каждый из которых содержит 1 элемент (список из 1 элемента считается отсортированным).
  • Повторно объединяйте подсписки для создания новых отсортированных подсписков, пока не останется только 1 подсписок. Это будет отсортированный список.

Пример сортировки слиянием :

«Объединение

Сортировка слиянием: графическое представление

«Иллюстрированные

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

Код Python:

def mergeSort(nlist):
    print("Splitting ",nlist)
    if len(nlist)>1:
        mid = len(nlist)//2
        lefthalf = nlist[:mid]
        righthalf = nlist[mid:]
        mergeSort(lefthalf)
        mergeSort(righthalf)
        i=j=k=0       
        while i < len(lefthalf) and j < len(righthalf):
            if lefthalf[i] < righthalf[j]:
                nlist[k]=lefthalf[i]
                i=i+1
            else:
                nlist[k]=righthalf[j]
                j=j+1
            k=k+1
        while i < len(lefthalf):
            nlist[k]=lefthalf[i]
            i=i+1
            k=k+1
        while j < len(righthalf):
            nlist[k]=righthalf[j]
            j=j+1
            k=k+1
    print("Merging ",nlist)
nlist = [14,46,43,27,57,41,45,21,70]
mergeSort(nlist)
print(nlist)

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

 Расщепление [14, 46, 43, 27, 57, 41, 45, 21, 70]                                                               
Расщепление [14, 46, 43, 27]                                                                                   
Расщепление [14, 46]                                                                                           
Расщепление [14]                                                                                               
Слияние [14]                                                                                                 
Расщепление [46]                         
-------
Слияние [14, 21, 27, 41, 43, 45, 46, 57, 70]                                                                 
[14, 21, 27, 41, 43, 45, 46, 57, 70] 

Блок - схема:

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

Визуализируйте выполнение кода Python:

Следующий инструмент визуализирует, что компьютер делает шаг за шагом при выполнении указанной программы:

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

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

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

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

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


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code