【发布时间】:2018-02-08 07:34:19
【问题描述】:
我正在尝试计算冒泡排序的 theta 符号,但我遇到了困难。给定这个过程(伪代码):
procedure BUBBLE_SORT(A,n) {
array A(1 to n)
for (int i = 1; i <= n; i++) {
for(int j = 1; j <= n-1; j++) {
if(A[j] > A[j+1] {
//swap(A(j), A(j+1))
}
}
}
}
我能够使用 sigma 表示法获得最坏情况下的运行时间:
(n^2 - n) / 2
为了最好的案例运行时间,我按照我的书做了这个:
给定 p(n) = (n^2 - n) / 2,我们声称 p(n) = Θ(n^2)。为了证明这一点,我们展示了对于一些常数 c1、c2 和 n0:
C1n^2
两边除以n^2,我们得到:
C1
这就是我迷路的地方。书中作者挑出一些数字,插上去说“因此得出p(n) = Θ(n^2)”
我如何知道要插入哪些数字?我可以插入任何数字吗?如果这些数字确实符合不等式,这是否意味着我可以立即说算法是 Θ(n^2)?
谢谢!
【问题讨论】:
-
哎呀你是对的!感谢您指出。立即编辑
标签: algorithm sorting time-complexity bubble-sort