这是优化的冒泡排序算法的伪代码。我试图分析它的时间复杂度,但我不确定第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
答案 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
应位于外部循环内部,但不在内部。