在研究一些基本的排序算法时,我注意到在文献中他们总是说任何n²顺序的排序算法或多或少都是不切实际的,甚至不适合用于大数据集。
嗯,这似乎是合法的,因为每次输入数据加倍时,该算法的运行时间增加了四倍。但是......当一组要处理的数据太大时,边界在哪里?这个问题是否有任何通用答案?
答案 0 :(得分:1)
人们普遍认为,对于任何超过10-20个元素的内容,您都会使用效率更高的sorting algorithm,例如quick-sort或merge-sort。
没有一个确切的点,一个变得比另一个快,因为它取决于你正在使用的机器的数据和规格。
并且,可能需要一段时间,但没有什么能阻止您使用插入排序来对几PB的数据进行排序。
答案 1 :(得分:0)
InsertionSort比小数据集上更快的线性算法更有效。我在教科书中看到了低至10到20的建议,但Tim-sort被认为非常有效,它是合并和插入排序的混合体。如果我没记错的话,它使用最多63个元素的数据集来插入可排序的部分。
编辑: 您可以在Tim-sort at Wikipedia找到更多信息。
Tim-sort仅对63个元素或更小的数据集使用插入排序。对于较大的数据集,它插入排序大小为32-64的范围并合并它们。
但是,有时候,您只需要尝试不同的技术并测量结果,否则您可能会受到可用数据结构的限制。如果以ms为单位进行测量,您会看到时间差异大约在20-100个项目之间,但用户可能不会注意到。通常,您已经在高级语言的标准库中为您实现了快速排序算法。