当CPU以10 ^ 8次操作/秒运行时,对阵列进行排序所花费的时间

时间:2015-01-17 14:38:29

标签: arrays sorting time-complexity mergesort insertion-sort

假设CPU每秒可以处理10 ^ 8次操作。假设您必须使用10 ^ 6个元素对数组进行排序。以下哪项是正确的?

  1. 插入排序总是需要超过2.5小时,而合并排序总是需要不到1秒。
  2. 插入排序总是需要超过2.5小时,而快速排序总是需要不到1秒
  3. 插入排序可能需要2.5小时以上,而合并排序总是需要不到1秒。
  4. 插入排序可能需要2.5小时以上,而快速排序总是需要不到1秒。

2 个答案:

答案 0 :(得分:0)

插入排序的最坏情况复杂性是什么?

mergesort和quicksort的最坏情况复杂性是什么?

插入排序是否可能持续不到2.5小时?如果是的话,那是什么情况?

quicksort(或mergesort)的最佳案例复杂性是什么? 插入排序的最佳案例复杂性是什么?

如果你回答这些问题。你很容易回答你的问题。

如果你不知道最坏情况或最佳情况意味着什么,那么试着找到这些问题的答案。

如果排序需要10 ^ 12步,如果你的CPU每秒执行10 ^ 8步,它会在几秒(或几小时)内持续多长时间? 对快速排序,合并排序或插入排序的长度n数组进行排序需要多少步骤?

回答上述所有问题后,您将更接近回答问题。 这样做,我向你保证,你将能够立即回答。

答案 1 :(得分:0)

插入排序&amp ;;的最坏情况复杂性快速排序是O(n ^ 2)。

合并排序的最坏情况复杂度为O(n * log(n))

因此,对于插入排序&快速排序步骤为(10^6)^2 = 10^12

所以需要10^12/10^8 = 10^4 or 10,000 seconds = 2.77hrs(因为CPU运行10 ^ 8步/秒)

在哪里,没有。合并排序的步骤是(10^6*log(10^6)) = 6*10^6步骤,(6*10^6/10^8) = 0.06secs小于1

但是视情况可能是选项1或3可能是正确的,这里插入排序可能需要不到2.5小时,具体取决于问题,导致插入排序的平均情况复杂度为(N-1)*N/4计算运行时间为它,我们得到0.69hrs小于2.5小时,所以第3个陈述是正确的。