InsertionSort和大量数据[O(n²)]

时间:2014-01-04 22:09:44

标签: algorithm insertion-sort

在研究一些基本的排序算法时,我注意到在文献中他们总是说任何n²顺序的排序算法或多或少都是不切实际的,甚至不适合用于大数据集

嗯,这似乎是合法的,因为每次输入数据加倍时,该算法的运行时间增加了四倍。但是......当一组要处理的数据太大时,边界在哪里?这个问题是否有任何通用答案?

2 个答案:

答案 0 :(得分:1)

人们普遍认为,对于任何超过10-20个元素的内容,您都会使用效率更高的sorting algorithm,例如quick-sortmerge-sort

没有一个确切的点,一个变得比另一个快,因为它取决于你正在使用的机器的数据和规格。

并且,可能需要一段时间,但没有什么能阻止您使用插入排序来对几PB的数据进行排序。

答案 1 :(得分:0)

InsertionSort比小数据集上更快的线性算法更有效。我在教科书中看到了低至10到20的建议,但Tim-sort被认为非常有效,它是合并和插入排序的混合体。如果我没记错的话,它使用最多63个元素的数据集来插入可排序的部分。

编辑: 您可以在Tim-sort at Wikipedia找到更多信息。

Tim-sort仅对63个元素或更小的数据集使用插入排序。对于较大的数据集,它插入排序大小为32-64的范围并合并它们。

但是,有时候,您只需要尝试不同的技术并测量结果,否则您可能会受到可用数据结构的限制。如果以ms为单位进行测量,您会看到时间差异大约在20-100个项目之间,但用户可能不会注意到。通常,您已经在高级语言的标准库中为您实现了快速排序算法。