我在很多地方都谈到了插入排序对小型数据集的好处。我找不到“小”的数字。我的猜测是,没有绝对答案,这取决于运行代码的机器类型。
但是,什么因素决定插入排序是一个好主意的阈值?什么是“小”的标准数字? 5? 10点50吗100?
谢谢!
网站上说插入排序适用于小型数据集: https://www.toptal.com/developers/sorting-algorithms/insertion-sort
答案 0 :(得分:1)
尝试回答一个问题,前提是我们正在谈论一般的排序问题。插入排序平均为O(n ^ 2),高效排序算法平均为O(nlogn)。因此,模糊地说,如果某事物需要K个步骤进行有效排序,则插入排序将花费K ^ 2个步骤(有点)。
因此,如果n> K太慢,无法满足您进行有效排序的需求,那么n> K ^ 0.5对您而言(大致)对插入排序来说就太慢了。
实际上,假设您很高兴使用有效的排序方式对10 ^ 8大小的数组进行排序,然后您可能希望通过插入排序对10 ^ 4大小的数组进行排序。
答案 1 :(得分:1)
是的,您的猜测是正确的-没有绝对的答案,必须测量插入排序和其他方法之间的阈值在哪里。
例如,对于合并合并或快速排序中的小片段,触发插入排序(当然会获得一些收益)的典型值大约为32-100(但可能因数据和实现细节而异)