我在互联网上搜索,以找出哪种排序算法最适合非常大的数据集。我发现许多人认为合并排序是最好的,因为它是公平的,而且它确保了时间复杂度是O(n log n),快速排序是不安全的:快速排序的变体也可能是不安全的,因为真实的数据集可以是任何东西。
如果交换这两个元素的时间开销可以忽略不计,那么为什么我们不能选择堆排序作为这种情况下的最佳排序算法,因为它是适当的,并且O(n log n)?
在合并排序的情况下,它需要另一个O(n)空间;如果数据非常大,那么我们就不能使用这个算法。
请告诉我:在这种情况下,哪种算法应该是最好的?
发布于 2015-08-27 03:30:18
你的问题太过开放,无法具体回答。有许多高效的排序算法,每个算法都有自己的优点和缺点。如果您知道您的数据,那么最优效率算法(堆、快速、合并等)可能不是适合这项工作的工具。
例如,在最近的一个产品中,我们需要将Word文档中的书签按其出现的顺序进行排序。由于对文档的编辑(复制、剪切、粘贴),书签可能会变得无序,因此在每次操作之后,对列表进行重新排序是很重要的。在这种情况下,冒泡排序是正确的答案,尽管它比任何其他算法都具有更高的大O复杂度。事实上,当列表几乎被排序时,排序是有效的(在这种情况下通常是这种情况),而且它是一个就地操作,这意味着它是适合这项工作的工具。
仔细查看您的数据,并阅读著名排序算法的各种优缺点,您就可以很好地回答自己的问题了。
https://stackoverflow.com/questions/32234711
复制相似问题