归并排序
归并排序,待排序列表有n个值,则可以看成是n个有序子列表,每个子列表长度为1,然后两两归并,得到n//2个长度为2或者1的子列表,再两两归并,如此重复,直到得到一个长度为n的有序列表。
代码实现
# -*- coding = utf-8 -*- # @Author: Wchime # @time: 2023/1/27 17:07 # @file: 归并排序.py def sort_merge(li): """归并排序""" n = len(li) if n <= 1: return li mid = n//2 left_li = sort_merge(li[:mid]) right_li = sort_merge(li[mid:]) left_p, rigth_p = 0, 0 res = [] while left_p <len(left_li) and rigth_p < len(right_li): if left_li[left_p] <= right_li[rigth_p]: res.append(left_li[left_p]) left_p += 1 else: res.append(right_li[rigth_p]) rigth_p += 1 res += left_li[left_p:] res += right_li[rigth_p:] return res if __name__ == "__main__": l = [1, 9, 4, 8, 2, 3, 7] l = sort_merge(l) print(l)

浙公网安备 33010602011771号