def merge(a, b): c = [] h = j = 0 while j < len(a) and h < len(b): if a[j] < b[h]: c.append(a[j]) j += 1 else: c.append(b[h]) h += 1 if j == len(a): last = [i for i in b[h:] ] else: last = [i for i in a[j:] ] return c+last def merge_sort(lists): if len(lists) <= 1: return lists middle = len(lists)//2 left = merge_sort(lists[:middle]) right = merge_sort(lists[middle:]) return merge(left, right) #测试用例 if __name__ == '__main__': a = [10, 1, 15, 32, 21] print (merge_sort(a))
归并排序
最新推荐文章于 2024-05-04 10:50:24 发布