归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
#coding:utf-8
def mergeSort(lis):
if len(lis) < 2:
return lis
length = int(len(lis) >> 1)
leftLis = mergeSort(lis[:length])
rightLis = mergeSort(lis[length:])
return merge(leftLis, rightLis)
def merge(left, right):
r, l = 0, 0
res = []
while l < len(left) and r < len(right):
if left[l] < right[r]:
res.append(left[l])
l += 1
else:
res.append(right[r])
r += 1
res += left[l:]
res += right[r:]
return res
lis = [2, 4, 7, 8, 9, 6, 11, 2, 5]
print(lis)
print('============================')
print(mergeSort(lis))
本文介绍了一种基于分治法的有效排序算法——归并排序。通过递归地将序列分为更小的部分并重新组合来实现排序过程。文章还提供了一个Python实现示例。
1845

被折叠的 条评论
为什么被折叠?



