- """归并排序"""
- def merge_sort(li):
- # 递归出口
- if len(li) == 1:
- return li
- # 第 1 步: 先分
- mid = len(li) // 2
- left = li[:mid]
- right = li[mid:]
- left_one = merge_sort(left)
- right_one = merge_sort(right)
- # 第 2 步: 再合 - 从内到外执行
- result_li = merge(left_one,right_one)
- return result_li
- def merge(left_one,right_one):
- """开始合并"""
- result = []
- while len(left_one)> 0 and len(right_one)> 0:
- if left_one[0] <= right_one[0]:
- result.append(left_one.pop(0))
- else:
- result.append(right_one.pop(0))
- result += left_one
- result += right_one
- return result
- li = [6,5,3,1,8,7,2,4]
- print(merge_sort(li))
来源: http://www.bubuko.com/infodetail-3458193.html