最好情况和最坏情况的时间复杂度
Best case and worst case time complexity
给定数组 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),为什么?我好像不太明白这两者的区别
至于最好情况的复杂度,它与最坏情况的复杂度不一样,因为算法仍然要运行通过相同的线路吗?
该算法中的主导操作是比较A[i] > A[j]
。此比较 总是 进行 n^2 次。
O(n^2) 表示这是最坏情况下的复杂度。如果你使用 O 表示法,你会说这种复杂性在最好的情况下可能会更好。
Theta(n^2) 表示这是 所有 情况下的复杂度。
所以答案是:复杂度是 Theta(n^2) 因为在最好和最坏的情况下都是 n^2。
参见:Big-Theta notation and Big-O notation
给定数组 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),为什么?我好像不太明白这两者的区别
至于最好情况的复杂度,它与最坏情况的复杂度不一样,因为算法仍然要运行通过相同的线路吗?
该算法中的主导操作是比较A[i] > A[j]
。此比较 总是 进行 n^2 次。
O(n^2) 表示这是最坏情况下的复杂度。如果你使用 O 表示法,你会说这种复杂性在最好的情况下可能会更好。
Theta(n^2) 表示这是 所有 情况下的复杂度。
所以答案是:复杂度是 Theta(n^2) 因为在最好和最坏的情况下都是 n^2。
参见:Big-Theta notation and Big-O notation