Автор оригинала: Python Examples.
Python Merge Sort.
В этом руководстве мы реализовали алгоритм сортировки слияния. Кроме того, по умолчанию функция merge_sort () в следующей программе сортирует список в порядке возрастания.
Чтобы получить порядок убывания, все, что вам нужно сделать, просто обратный список.
Python Program
def merge_sort(nlist, start, end): #sorts the list from indexes start to end - 1 inclusive if end - start > 1: mid = (start + end)//2 merge_sort(nlist, start, mid) merge_sort(nlist, mid, end) merge_list(nlist, start, mid, end) def merge_list(nlist, start, mid, end): left = nlist[start:mid] right = nlist[mid:end] k = start i = 0 j = 0 while (start + i < mid and mid + j < end): if (left[i] <= right[j]): nlist[k] = left[i] i = i + 1 else: nlist[k] = right[j] j = j + 1 k = k + 1 if start + i < mid: while k < end: nlist[k] = left[i] i = i + 1 k = k + 1 else: while k < end: nlist[k] = right[j] j = j + 1 k = k + 1 #input list aList = [1, 74, 96, 5, 42, 63] merge_sort(aList, 0, len(aList)) print('Sorted List after Merge Sort, in Ascending Order\n', aList) aList.reverse() print('Sorted List after Merge Sort, in Descending Order\n', aList)
Выход
Sorted List after Merge Sort, in Ascending Order [1, 5, 42, 63, 74, 96] Sorted List after Merge Sort, in Descending Order [96, 74, 63, 42, 5, 1]
Заключение
В этом руководстве примеров Python мы узнали, как реализовать алгоритм сортировки слияния в Python.