排序算法(二):归并排序

归并排序(MergeSort)是大神冯诺依曼研发的一款高效且稳定的排序算法,据资料显示,Python自带排序函数用的就是归并排序。其稳定性和效率肯定是毋庸置疑的了,学好归并排序非常有用,是多路归并排序的功底课(多路归并排序在海量数据环境下内存不足是非常有用)。

时间复杂度:O(n*logn)

空间复杂度:O(n)


下面我讲解一下归并排序的排序流程:

给定一个列表,里面有许多待排序的数,诸如:L=[35, 24,16,28,20,4,32,10],我对这个L进行归并排序:

1.首先读者要了解的是,归并排序使用的是分治的递归思想(将问题分成差不多相等的两块,分而治之,将较大的问题转换成较小的问题,有助于减小时间复杂度)。那么我们先将原问题分为L_l=[35,24,16,28]和L_r=[20,4,32,10]两个部分,随后左右两个部分继续分,直到分成一个数为止。

2.“分”的阶段结束了,下面是合,合的话调用另一个Merge函数就行了,这个函数的作用是将L_l和L_r进行排序合并在一起。Merge函数首先放置两个标志位i和j,i和j分别在L_l与L_r的第一个位置。这时比较L_l[i]与L_r[j]的大小,把较小的一个放进r[]这个排完序的列表中,然后i++或者j++,然后重复该循环,循环的终止条件是:L_l[i]与L_r[j]其中任意一个全进到r[]中了,就将另一个从

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值