如果冒泡排序需要200秒来排序200个名称,那么它可以在800秒内排序多少个项目?
计算比较次数可以为我们提供解决方案。我们如何计算排序200个名称所需的比较次数?我们必须考虑最好的情况吗?
答案 0 :(得分:1)
(n-1) + (n-2) + .. +1
。再做一些数学?(显然你可以编写一个智能冒泡排序,不对已排序的数组进行排序)
BUBBLESORT A
for i = 1 to A.length 1
for j = A.length downto i+1
if A[j] < A[j - 1]
exchange A[j] with A[j-1]
算法导论 - CLRS
[1]在#3上。请参阅http://en.wikipedia.org/wiki/Bubble_sort它提到了一个优化的内部循环,它识别出已排序的剩余数组,并提供最佳情况O(n) - 对不起。
答案 1 :(得分:1)
800是4 x 200.冒泡排序是O(n * n),因此平均而言,你可以在4倍的时间内对两倍的项目进行排序,所以预期平均为200个名称,如果200是平均值情况下。