Quicksort或Selectionsort?

时间:2015-01-24 19:39:54

标签: sorting data-structures quicksort selection-sort

我对快速排序和选择排序有疑问。我在这里看了很多帖子,但没有一个回答我的问题。 看一看: 我们有10GB的数字,我们必须对它们进行排序。但是,我们只有800mb的内存可用,因此mergesort是不可能的。现在,由于阵列的庞大尺寸,bubblesort也是不可能的。 就个人而言,我认为这两种sortin算法都非常适合这项工作,但是我必须只选择其中一种,哪种算法效果更好。 Quicksort:通常有:O(N * logN)和最差:O(N ^ 2) 选择:通常&最差:O(N ^ 2) Quicksort看起来更好,但根据我的经验,我认为Selectionsort对于大型数据结构的快速排序略胜一筹。你怎么看?谢谢!

3 个答案:

答案 0 :(得分:1)

selection sort is slightly better than quicksort for huge data structures!你是从哪里得到的?该算法需要二次时间,因此它明显比快速排序差。实际上,你如何在RAM中容纳10GB,如果它不在RAM中,你就不能在你的阵列上使用任何算法。您需要一个外部排序算法,或者您可以将数据存储在数据库中,让数据库引擎为您排序。

答案 1 :(得分:0)

对于如此庞大的数据而言,快速排序比选择排序更好。如果测试数据中包含较大的排序数据集,则选择排序可能会表现得更好。但这并不能使它比快速排序更好。在你的情况下你的主要问题是如何继续排序这样庞大的数据,因为它不能保存在内存中并执行

答案 2 :(得分:0)

Quicksort应该用于这种情况,因为它是当前最快的排序算法。因为选择排序会仔细检查每个术语以找到最小的数字并将其放在最前面,所以即使内存量有限,它也会花费更长的时间(特别是如果提到的数据结构庞大)。