【排序算法】快速排序的改进

        快速排序有以下几种思路可以优化,一般来说,可以提升20%~30%的性能:

        1、切换到插入排序

        和大多递归排序算法类似,改进快速排序算法的一个简单办法基于以下两点:

        1)对于小数组,快速排序比插入排序慢

        2)因为递归,快速排序的sort()方法在小数组中也会调用自己

        所以,在排序小数组时切换到插入排序对于提升算法性能是有效的。

        2、三取样切分

        使用子数组的一小部分元素的中位数来切分数组,这样做得到的切分效果更好,但是需要计算中位数

        3、熵最优的排序

        实际应用中经常会出现含有大量重复元素的数组,这样的情况下,快速排序的性能还好,但还有巨大的改进空间。因为大量重复的元素会导致快速排序的递归性使元素全部重复的子数组经常出现。

        对于这种情况,一个简单的办法是将数组切为三部分,分别对应小于、大于、等于切分元素的数组元素,这样切分会比二分法更为复杂,但是性能更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值