归并排序Python 实现
2021-06-18 11:03
标签:def and tle red += pytho end 算法 结果 ? -归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分合策略(将问题分(divide)成一些小的问题然后递归求解,而合的阶段则将分的阶段得到的各答案"修补"在一起,分久必合)。 ? 然后按照中间分割区,选两个箭头一个指向左边最小,一个指向右边最小,将两个箭头对应的数比较,把较小的个放入上面的新列表 赋值完成后,将绿色标记自增1。左侧红色标记自增1。 然后继续比较两个数组红色标记处的元素。此时右侧数组元素小,所以将右侧数组标记处元素赋值给绿色数组的绿色标记处。 重复上面的步骤 最后得到结果 ? ? 如图 #1处: 这就是归并排序的分解 与 合并 归并排序Python 实现 标签:def and tle red += pytho end 算法 结果 原文地址:https://www.cnblogs.com/shiqi17/p/9696301.html
?
如图按照图中的一组数组被分成两半,蓝色和红色都是分别排好序了的
这就称为一次归并排序
?
def sort(lst, low, mid, high):
i = low
j = mid +1 # low ----> mid 代表了前面所有拍好序的一个组 mid 到 mid + 1 是乱序部分 mid+1 到最后又是另一个排好序的组
lstm = []
while i
这样一次归并排序就完成了
def all_sort(lst, low, high):
if low
mid = (low + high)//2
将列表一分为二, #2处递归前半段, #3出递归后半段。
如:low=0, mid=2时还剩 0, 1, 2 三个数。下次计算mid=(low + high)//2
mid = 1, low=0. 表明只剩下两个数了,然后计算 (0 + 1)//2 = 0 这时low = mid = 0,继续传入#2就不会递归了,
?
既然是两个数,中间一分开左右都是有序的,将两个数按照大小拍好,然后开始不断的把所有结果和到一起