Math 我似乎无法从我的课本中找出这个大O符号

Math 我似乎无法从我的课本中找出这个大O符号,math,big-o,Math,Big O,是给出的原始代码 作者声明时间复杂度为c*(n-1)*n/2。我同意这一点。但他接着说,它减少到了O(n),我被难住了,我原以为是O(n^2)。我真的看不到它-你至少需要O(n^2)。如果你愿意,你可以写O(n^100),但我想你不会 首先写|(n/2)(n-1)| 1) 10=0 (1/n)*(log(2M)+(x-1)*(n))>=0是我们现在的声明 (1/n)对于n>1为正 当2M>1时,对数(2M)为正 log(n)为正,因为n>1 (x-1)对于x小于1的任何值都是负值,因此x>=1,

是给出的原始代码


作者声明时间复杂度为c*(n-1)*n/2。我同意这一点。但他接着说,它减少到了O(n),我被难住了,我原以为是O(n^2)。

我真的看不到它-你至少需要O(n^2)。如果你愿意,你可以写O(n^100),但我想你不会

首先写
|(n/2)(n-1)| 1

1
0=0

(1/n)*(log(2M)+(x-1)*(n))>=0
是我们现在的声明

(1/n)对于n>1为正

当2M>1时,对数(2M)为正

log(n)为正,因为n>1

(x-1)对于x小于1的任何值都是负值,因此x>=1,使我们的方程
O(n^2)
,或者

log(2M)>=(1-x)*log(n)

对于订单(n),x=0,留下
log(2M)>=log(n)
。当它缓慢膨胀时,它是无限的,所以找不到M的值


看起来你不会得到一个n阶方程。如果不是这样的话,请指出我错在哪里

我想你可能想要
而不是
是的,谢谢!我编辑了它。我想我同意你的看法——根据维基百科(权威信息的伟大来源),你可以把你的函数写成
n^2/2-n/2-->1/2(n^2+)-->1/2(n^2+n^2)-->n^2
在倒数第二步中,假设对于n的任何值(因此n必须是正的),
n^2>=n
。查看
j>i
并思考循环中的逻辑。虽然我看不出它是O(n),但我绝对不相信它是O(n^2)。严格地说,我想你需要
log(2M)>(1-x)*log(n)
,不管x的值是多少。在x=1的情况下,满足M>0.5。
for(int i=n; i>0; i--) { 
 for(int j=n; j>i; j--) {
 System.out.println("Algorithm analysis"); }
}