def merge(a, b): #需要有一个新的数组来合并两个原来有序的数组。 c = [] h = j = 0 while j < len(a) and h < len(b): #每次将两个数组中最小的送入新的数组C if a[j] < b[h]: c.append(a[j]) j += 1 else: c.append(b[h]) h += 1 if j == len(a): #判断哪个数组已经全部送入C,将另一个剩下的数据全部并入C for i in b[h:]: c.append(i) else: for i in a[j:]: c.append(i) return c def merge_sort(lists): if len(lists) <= 1: return lists else: middle = len(lists) // 2 left = merge_sort(lists[:middle]) print(left) right = merge_sort(lists[middle:]) print(right) result = merge(left, right) print(result) return result if __name__ == '__main__': a = [4, 7, 8, 3, 5, 9] print(merge_sort(a))
归并排序
最新推荐文章于 2024-03-26 17:18:09 发布