插入排序与合并排序的时间

时间:2016-09-05 20:34:56

标签: sorting big-o mergesort insertion-sort

如果插入sort和mergesort占用1000个元素的相同时间,比如说1秒,每个算法分别对10 ^ 6个元素和10 ^ 9个元素进行排序需要多长时间?

插入排序和合并输出的大O分别为n ^ 2和n * log n。

这实际上是关于作业的一个侧面问题所以应该有一个可靠的答案。

请解释你的答案背后的理由。

2 个答案:

答案 0 :(得分:1)

我的回答是这个问题无法回答,因为我们没有告诉任何关于元素大小以及mergesort获取所需工作内存的方式。 (插入排序需要不断的额外内存; mergesort需要额外的O(n)内存。)如果元素是100KiB,那么分配工作内存将花费大量时间。

答案 1 :(得分:0)

语法排序的时间复杂度为O(n^2),因此时间与要排序的元素数n呈二次方式。如果n=1000需要1秒钟,则n=10^6需要1*(10^6/1000)^2=10^6秒,n=10^9需要1*(10^9/1000)^2=10^12秒。 Mergesort时间复杂度为O(n*log(n))。因此,可以相应地缩放时间,以发现n=10^6需要2000秒而n=10^9需要3*10^6秒。由于O(n^2)O(n*log(n))都高于O(n),我们可以忽略,比如说,为合并排序分配额外存储空间O(n)所需的时间在大n限制中并且仅基于排序时间复杂度进行估计。希望这会有所帮助。