发布网友 发布时间:2022-04-26 11:36
我来回答
共3个回答
热心网友 时间:2022-05-02 22:47
如有疑问请追问,如您满意请采纳,谢谢
热心网友 时间:2022-05-03 00:05
热心网友 时间:2022-05-03 01:40
i=s=0; //时间复杂度是O(1)while(s<n){ //时间复杂度是O(n)i++; //时间复杂度是O(n)s+=i; //时间复杂度是O(n)}//累计时间复杂度是O(1+n+n+n),即O(n)如有疑问请追问,如您满意请采纳,谢谢
i<根号2n 所以复杂度为 O(根号n)
【答案】:C 循环体里面是i=i*2,即每循环一次i值增加一倍,所以执行次数与n之间是以2为底的对数关系,故时间复杂度为O(log2n)。
这段程序是错的。.正确的应该是:i=s=0;while (s<n)do{ i++;s+=i; //s=s+i } 复杂度是n 只有一次循环 没有嵌套循环.这样可以么?
这个你要看时间复杂度是怎么定义的,为了剔除机器和程序设计技巧对运行时间的影响,在计算时间复杂度时考虑的是运行的次数,正如你所说,上述问题的算出来是根号2n,根号2n又等于根号2乘以根号n,此时我们就认为它的复杂度是根号n,因为根号2可以看成是它的一个线性系数,随着输入规模n的增加是可以忽略的 ...
就是设(上面的k和n写反了,呵呵,不好意思)n=1+2+...+k=(k*(k+1)/2)=(k^2+k)/2-->k*(k+1)=2*n-->k^2>k*(k+1)=2*n-->k>(2*n)^(1/2)(就是k>根号2*n),所以去掉常数2^(1/2)(就是根号2),时间复杂度就是O(n^1/2)(既根号n)...
+1)的/ 2)=(??K ^ 2 + k)的/ 2 - >的k *(k +1)的= 2 * n个 - > K ^ 2>的k *(k +1个) = 2 * n个 - > K>(2 * n个)^(1/2)(为k>根2 * n个),因此删除该常数2 ^(1/2)(2的平方根),时间复杂度为O(n ^ 1/2)(包括n的平方根)...
时间复杂度为O(n^1/2)。在循环中i每次自增1,s是求前i项的和,根据等差数列求和公式s=i(i+1)/2,循环结束的条件是s<=n,也就是i(i+1)/2<=n,所以i是与n的1/2次方成正比的,因此得出结论。当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环。while语句的一般表达式为...
s=i*(i+1)/2;所以while循环将执行(2n)^(-1)(即2n开平方)又while循环内算法时间复杂度为2,所以总复杂度为2(2n)^(-1)..
时间复杂度为O(n^0.5),即根号n的数量级。该程序求解的是:s=1+3+5+7+...+(2k+1),且使得s-(2k+1)<n≤s。而s=(1+(2k+1))*(k+1)/2=(k+1)^2,k+1则为上述等差数列的项数,也是你的程序中while循环执行的趟数。求出k<根号n≤(k+1),因此循环执行根号n趟。则T(n)=2...