给出数组A的以下伪代码
x = 0
for i = 0 to n - 2
for j = i to n - 1
if A[i] > A[j]:
x = x + 1
return x
最坏情况复杂度是O(n ^ 2)还是Theta(n ^ 2)?为什么?我似乎并不理解两者之间的区别。
至于最佳案例复杂性,它是否与最坏情况的复杂性不同,因为算法仍然必须通过相同的行?
答案 0 :(得分:3)
此算法中的主导操作是比较A[i] > A[j]
。这种比较总是完成n ^ 2次。
O(n ^ 2)意味着这是最坏情况的复杂性。如果你使用O表示法,你会说这种复杂性在最好的情况下会更好。
Theta(n ^ 2)表示这是所有个案的复杂性。
所以答案是:复杂性是Theta(n ^ 2),因为在最佳和最差情况下它都是n ^ 2.