当前位置:   article > 正文

归并排序——分治(python实现)_分治法实现合并排序python

分治法实现合并排序python

1.算法思想

归并排序(Merge sort)与快速排序算法十分类似,也是将待排序数据分成两个部分,然后将两个子部分进行递归的归并排序;最后将已经有序的两个子部分进行合并,最终完成排序。

2.算法分析

归并排序的基本思路是先找到一个数组的中间下标mid,然后以这个mid为中心,对两边分别进行排序,之后我们再根据两边已经排好序的子数组,重新进行值大小分配。

(1)利用分治算法思想将待排序的序列递归分成细度为1的子序列。

(2)此时子序列只有一个元素,无需排序,两两进行简单归并。

(3)归并到上一层级后继续归并,归并到更高层级。

(4)直至归并完成,完成排序工作。

 

 3.实现代码

  1. def merge_sort(seq):
  2. if len(seq) < 2:
  3. return seq
  4. else:
  5. mid = len(seq) // 2
  6. left = merge_sort(seq[:mid])
  7. right = merge_sort(seq[mid:])
  8. res = []
  9. while left and right:
  10. if left[-1] >= right[-1]:
  11. res.append(left.pop())
  12. else:
  13. res.append(right.pop())
  14. res.reverse()
  15. return left + right + res
  16. if __name__ == "__main__":
  17. test_list = [23, 45, 12, 3, 62, 32, 45, 17]
  18. print(merge_sort(test_list))

 输出结果:

[3, 12, 17, 23, 32, 45, 45, 62]

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/82073
推荐阅读
相关标签
  

闽ICP备14008679号