如何分析给定优化冒泡排序的复杂性?

时间:2013-05-09 14:27:38

标签: time-complexity bubble-sort

这是优化的冒泡排序算法的伪代码。我试图分析它的时间复杂度,但我不确定第4行的成本是多少(如果A [i-1]> A [i])。答案是(n-1)+(n-2)+ ........ + 1? 5号线到8号线的费用是多少?

1.for j = A.length to 2
2.    swapped = false
3.    for i = 2 to j
4.        if A[i-1] > A[i]
5.            temp = A[i]
6.            A[i-1] = A[i]
7.            A[i-1] = temp
8.            swapped = true
9.    if(!swapped)
10.       break

1 个答案:

答案 0 :(得分:2)

单次迭代的第5行到第8行的成本是O(1)。

第3-8行的循环成本为O(j-1)。

在最坏的情况下整个成本的成本是O((n-1)+(n-2)+ ... + 2)= O(n ^ 2)(但当然在最好的情况下,当数组已经排序时,成本将只有O(n-1))。

顺便说一下,优化冒泡排序的实现包含一个错误:第9行的if应位于外部循环内部,但不在内部。