python实现排序算法——归并排序

本文介绍了使用Python实现归并排序的详细过程,包括算法思想、步骤分解和具体代码实现。通过实例展示了如何将待排序序列分割并进行归并,讨论了算法的空间复杂度为O(n)和时间复杂度为O(nlogn)。
摘要由CSDN通过智能技术生成

       使用python实现归并排序。
       归并排序采用的是“分而治之”的思想,也就是将一个待排序的数列分成前后两个部分,对这两个部分分别排序后,在将这两个部分合并到一起。
       其实,当我们把待排序的序列分成前后两个部分之后,我们可以调用任意的排序方法对其进行排序,然后在合并到一起。不过,在我们仍然采用归并排序法的时候,整个排序算法才叫做归并排序方法。意思也就是将两部分分成4部分,如果可以的话在分成八部分这样。
       合并的时候,首先将两个排序好的部分都拿出首位比较,哪个部分的小(默认从小到大排列)就选哪个出来,然后在比较这个部分的第二位数字和第一次较大的数字。


算法举例

对【9,2,5,7,0,4,8】排序。
首先是将待排序的数列进行分割。
1
对下面的4个小部分排序,得到【9】,【2,5】,【0,7】,【4,8】

接下来就是合并的环节,先合并【9】,【2,5】以及【0,7】,【4,8】


合并【9】,【2,5】:比较9和2,2小;然后比较9和5,5小,得【2,5,9】
合并【0,7】,【4,8】:比较0和4,0小;比较7和4,4小;比较7和8,7小。得【0,4,7,8】


最后在合并【2,5,9】和【0,4,7,8】,得到【0,2,4,5,7,8,9】


算法评价

       我们可以发现,归并排序法是需要额外得空间得,不是在原有空间上进行操作的,其空间复杂度是 O ( n ) O(n) O(n)。归并排序结构上可以看成一个完全二叉树,完全二叉树的深度是 n l o g n nlogn nlogn。所以归并排序的时间复杂度是 O ( n l o g n ) O(nlogn)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值