Time 以下各项的时间复杂度 inti=1,s=1; 而(s

Time 以下各项的时间复杂度 inti=1,s=1; 而(s,time,time-complexity,asymptotic-complexity,Time,Time Complexity,Asymptotic Complexity,这将计算总和s(k)=1+2+…+k,并在s(k)>n时停止 由于s(k)=k*(k+1)/2,s(k)超过n所需的迭代次数是O(sqrt(n)),这计算总和s(k)=1+2+…+k,并在s(k)>n时停止 由于s(k)=k*(k+1)/2,因此s(k)超过n所需的迭代次数是O(sqrt(n))让循环执行x次。现在,只要s小于n,循环就会执行 我们有: 第一次迭代后: s=s+1 第二次迭代后: s=s+1+2 随着x迭代的进行,最终我们将得到 1+2…+x(x*(x+1))/2O(x^2)x=

这将计算总和
s(k)=1+2+…+k
,并在
s(k)>n
时停止


由于
s(k)=k*(k+1)/2
s(k)
超过
n
所需的迭代次数是
O(sqrt(n))
,这计算总和
s(k)=1+2+…+k
,并在
s(k)>n
时停止


由于
s(k)=k*(k+1)/2
,因此
s(k)
超过
n
所需的迭代次数是
O(sqrt(n))
让循环执行
x次。现在,只要
s
小于
n
,循环就会执行

我们有:

第一次迭代后:
s=s+1

第二次迭代后:
s=s+1+2

随着x迭代的进行,最终我们将得到


1+2…+x
(x*(x+1))/2
O(x^2)
x=O(root(n))
让循环执行
x
次。现在,只要
s
小于
n
,循环就会执行

我们有:

第一次迭代后:
s=s+1

第二次迭代后:
s=s+1+2

随着x迭代的进行,最终我们将得到

1+2…+x
(x*(x+1))/2
O(x^2)
x=O(根(n))
s(k)=1+2+3+…k=(k+1)*k/2

对于
s(k)>=n
您至少需要k个步骤。
n=(k+1)*k/2
,因此
k=-1/2+-sqrt(1+4*n)/2

你忽略常数和系数,而
O(-1/2+sqrt(1+4n)/2)=O(sqrt(n))

s(k)=1+2+3+…k=(k+1)*k/2

对于
s(k)>=n
您至少需要k个步骤。
n=(k+1)*k/2
,因此
k=-1/2+-sqrt(1+4*n)/2

你忽略了常数和系数,并且
O(-1/2+sqrt(1+4n)/2)=O(sqrt(n))

你是如何计算出O(sqrt(n))部分的?我们需要解决它吗?或者在问题中,如果我发现“s(k)=k*(k+1)/2”,我可以直接假设它是O(sqrt(n)?你是如何计算出O(sqrt(n))部分的?我们需要解决它吗?或者如果我发现它,我们会遇到问题吗“s(k)=k*(k+1)/2”这个,我可以直接假设它是O(sqrt(n)?
int i=1,s=1;
while(s<=n)
{
i++;
s=s+i;
}