归并排序算法优化

1. 什么是归并排序?

更详细的解释可以百度,这里说说其主要思想:

归并排序是采用分治思想,将所有的数均匀的分成n个等分的组,然后依次取(x, x+1) 2个等分组,将他们合并排序,形成一个新的组,然后递归即可,最后会合并为一个组,这个组就是有序的。

示范一下:

要排序的11个数 : [8, 3, 4, 2, 22, 17, 13, 66, 9, 2, 100]

第1步:分成11个等分:{[3] , [8], [2] , [4], [17] , [22], [66], [13], [2], [9], [100]}

第2步:每2组合并并排序,如f([3], [8]) → [3, 8], f([2] , [4]) → [2, 4]

          得到6个新的分组{[3, 8], [2, 4], [17, 22], [66, 13], [2, 9], [100]},其中100因为没有其他分组与其合并,故单独做为一个分组

重复一次第2步:合并分组f([3, 8], [2, 4]) → [2, 3, 4, 8],类似的,合并完后得到3个新的分组{[2, 3, 4, 8], [13, 17, 22, 66], [2, 9, 100]}

继续重复第2步,最后会得到一个有序的大分组

可以看出,每次合并排序后,每个新的组内部是有序的,但组和组之间仍然是无序的。再次合并时,由于2个有序的组合并比2个无序的组合并要快得多,故归并排序是效率是比较高的。

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值