Python实现经典算法之分治策略-归并排序

有一组数字[38,27,43,3,9,82,10],我们要对齐进行排序。我们可以采取分治策略。

分治,顾名思义就是分而治之,一分为二,直到最小。


我们用上图来说明,比如 有


Python实现经典算法之分治策略---归并排序


[38,27,43,3,9,82,10] 对半分成:[38,27,43,3]和[9,82,10],然后继续对半分,直到分成只有一个数字,38 27 43 3 9 82 10

然后两两比较,小的在前大的在后,变成:

27 38 3 43 9 82 10

再通过合并的方法,找到左右两个已经排好序的列表比如 [27,38]和[3,43] 从最左边开始逐一比较

先:27 和 3 比较 3 小 放入新的空列表中 [3]

再:27 和 43 比较 27小 放入列表中 [3,27]

继续:38 和 43 比较 38小 放入列表中 [3,27,38]

最后:[3,27,38,43] ,然后继续和其它列表比较


Python实现经典算法之分治策略---归并排序

注意:函数merge_sort中调用了自己merge_sort,这种叫做递归算法。就是自己得出的结果再被自己进一步处理,一直到得出最终结果。分治和递归经常是形影相伴。

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章