归并排序

归并/合并排序

 

合并排序的主要思想是:把两个已经排序好的序列进行合并,成为一个排序好的序列。

我们可以把需要排序的数据分解成N个子序列,每个子序列都是只有一个元素的"有序序列",然后不断的合并成两个元素,四个元素,八个元素...的有序序列,这就是归并的过程。

 

例如,81726354:
(1)分成9172 6354
(2)把8172 分成 81 和72 把6354分成63和54
(3)81分成8和1,开始反向合并,合并为18, 同理72,63,54,也可以分解成单个合并为27,36,45
(4) 现在变为了 18, 27, 36, 45了,这个时侯,18 和27能合并了,合并为1278 同理36,合并为45 3456
(5)最后1278和3456合并为12345678.排序结束。

————合并时分别比较两个子序列的当前元素,取小的值放入新的序列中,不断继续直到两个子序列都归并进入和序列中

 

对n个长度为1的子数组归并需要n步,对n/2个长度为2的子数组进行归并需要n步..于是在logn层的递归中,每一层都需要O(n)的代价,该时间代价并不依赖于待排序数组中数值的相对位置。因此这也就是归并排序最佳,平均与最差的运行时间!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值