冒泡排序性能

时间:2012-10-08 09:33:04

标签: algorithm sorting bubble-sort

如果冒泡排序需要200秒来排序200个名称,那么它可以在800秒内排序多少个项目?

计算比较次数可以为我们提供解决方案。我们如何计算排序200个名称所需的比较次数?我们必须考虑最好的情况吗?

2 个答案:

答案 0 :(得分:1)

  1. 冒泡排序为O(n 2 )。做你的数学。 Big O只是给出了相对时间的概念,你可以猜测时间的粗略估计。不确切。
  2. BubbleSort首先进行n-1次比较,第二次进行n-2次比赛,依此类推。所以你总计(n-1) + (n-2) + .. +1。再做一些数学?
  3. 冒泡排序太可悲了,没有最好的情况! [1]
  4. (显然你可以编写一个智能冒泡排序,不对已排序的数组进行排序)

    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是平均值情况下。