最快的排序算法TimSort还能更快吗

关于TimSort排序算法,请看这篇:另一位博主的博客

本文主要讨论让TimSort更快的方法。

已经产生了许多run,它们的长度是:4 6 2 5 7

用类似于霍夫曼编码的方法,找出最小的两项,相加。这里是4 2,他们俩相加得6,现在的数据是:6 6 5 7

继续选最小的两个相加,是6 5,得到6 11 7

继续,13 11

最后,24
在这里插入图片描述
解释一下,将长度为4和6的两个run,进行归并排序,需要的时间约是4+6。采用霍夫曼编码的方式,可以让总的时间最小,这与霍夫曼编码的最优特性有关。

上图中,总时间为6+11+13+24=54

如果不按照这个顺序合并,总时间会变大:
在这里插入图片描述
执行归并排序时的操作次数,从54变成了62,这不是最优的。

总结

本文描述了一种让TimSort更快的方法,该方法从霍夫曼编码获得灵感,每次挑最小的两个run合并,可使总的操作数最小化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值