插入排序是“小型”数据集的不错选择。什么是“小”?

时间:2018-12-16 17:14:35

标签: algorithm sorting insertion-sort

我在很多地方都谈到了插入排序对小型数据集的好处。我找不到“小”的数字。我的猜测是,没有绝对答案,这取决于运行代码的机器类型。

但是,什么因素决定插入排序是一个好主意的阈值?什么是“小”的标准数字? 5? 10点50吗100?

谢谢!

网站上说插入排序适用于小型数据集: https://www.toptal.com/developers/sorting-algorithms/insertion-sort

2 个答案:

答案 0 :(得分:1)

尝试回答一个问题,前提是我们正在谈论一般的排序问题。插入排序平均为O(n ^ 2),高效排序算法平均为O(nlogn)。因此,模糊地说,如果某事物需要K个步骤进行有效排序,则插入排序将花费K ^ 2个步骤(有点)。

因此,如果n> K太慢,无法满足您进行有效排序的需求,那么n> K ^ 0.5对您而言(大致)对插入排序来说就太慢了。

实际上,假设您很高兴使用有效的排序方式对10 ^ 8大小的数组进行排序,然后您可能希望通过插入排序对10 ^ 4大小的数组进行排序。

答案 1 :(得分:1)

是的,您的猜测是正确的-没有绝对的答案,必须测量插入排序和其他方法之间的阈值在哪里。

例如,对于合并合并或快速排序中的小片段,触发插入排序(当然会获得一些收益)的典型值大约为32-100(但可能因数据和实现细节而异)