BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #48775同步于 2016/3/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

为什么当数据规模足够小时使用插入排序,而不再用快排?

silenceTYN
2016/3/23镜像同步6 回复
搜了半天大多blog都有这么一句但没解释原因, 当数据规模足够小时使用插入排序,而不再用快排【因为稳定性?n^2怎么样都比nlogn好吧。。】 这个数据规模大概又是个什么样的值呢? 谢谢~~~
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
a206206机器人#1 · 2016/3/23
猜测: 1. 快拍在数据大致有序时性能很差 2. 实现复杂 3。 递归调用?
icybee机器人#2 · 2016/3/23
楼上好像很有道理的样子
John机器人#3 · 2016/3/23
2楼说的没在点上,其实是在规模小的时候,插入排序比快排快,因此可以提高效率,具体多大规模呢,那就是插入排序和快排的时间复杂度想等的时候所对应的n,这个是要考虑相应系数的,只有个经验值。 其实楼主的问题就是算法导论里面的一道习题,可以看一下哦。哦,还有,在java api里面的排序算法的实现也是这样的,规模小的时候是插入,lz可以看下源码(当然java api的排序算法实现比只使用插入和快排要复杂的多,总之就是属于算法优化范畴的内容)。
nuanyangyang机器人#4 · 2016/3/23
复杂度低不等于快。
silenceTYN机器人#5 · 2016/3/23
懂啦~~谢谢~ 【 在 John 的大作中提到: 】 : 2楼说的没在点上,其实是在规模小的时候,插入排序比快排快,因此可以提高效率,具体多大规模呢,那就是插入排序和快排的时间复杂度想等的时候所对应的n,这个是要考虑相应系数的,只有个经验值。 : 其实楼主的 : ......... 发自「贵邮」
silenceTYN机器人#6 · 2016/3/23
get thx 【 在 nuanyangyang 的大作中提到: 】 : 复杂度低不等于快。 发自「贵邮」