只需要快速确认一些事情。
如果一个算法需要运行n(n-1)/2
个测试,那么这个问题是不是很大O(n^2)
?
答案 0 :(得分:16)
n(n-1)/ 2扩展为(n^2 -n) / 2
,即(n^2/2) - (n/2)
(n^2/2)
和(n/2)
是两个函数组件,其中n^2/2
占主导地位。
因此,我们可以忽略- (n/2)
部分。
从n^2/2
开始,您可以安全地删除渐近符号分析中的/ 2部分。
这简化为
n^2
因此,是,它在O(n ^ 2)
答案 1 :(得分:5)
是的,这是正确的。
n(n-1)/2
扩展为n^2/2 - n/2
:
线性项n/2
会下降,因为它的次序较低。这留下了n^2/2
。常量被吸收到big-O中,留下n^2
。
答案 2 :(得分:3)
是:
n(n-1)/2 = (n2-n)/2 = O(n^2)
答案 3 :(得分:2)
是的,确实如此。 n(n-1)/2
为(n^2 - n)/2
,如果您选择的c*n^2
至少为n>=1
,则明显小于c
{{1}}。