Автор оригинала: 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.