i=0;s=0; while(s<n) { i++; s=s+i; } T(n)=O(n) 时间复杂度是??

如题所述

按照循环条件,退出时有s>=n
设第x 次循环后退出循环,此时i = x, s= x(x+1)/2
代入得到x(x+1)>=2n,解方程得到x=(-1+根号(1+8n))/2上取整
因此时间复杂度为O(n^0.5),或者说O(根号n)
温馨提示:内容为网友见解,仅供参考
无其他回答

i=0;s=0; while(s<n) { i++; s=s+i; } T(n)=O(n) 时间复杂度是??
按照循环条件,退出时有s>=n 设第x 次循环后退出循环,此时i = x, s= x(x+1)\/2 代入得到x(x+1)>=2n,解方程得到x=(-1+根号(1+8n))\/2上取整 因此时间复杂度为O(n^0.5),或者说O(根号n)

有一程序片段:{i=0;s=0;while(s<=n){i++;s=s+i;}},其时间复杂度是
时间复杂度为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语句的一般表达式为...

i=0;s=0;while(s<n){i++;s=s+i;}请各位朋友帮忙求一下这道的时间复杂...
i s 1 1 2 1+2 3 1+2+3 : :k 1+2+3+...+k 所以总的 k(1+k)\/2 =n 时间复杂度:k=根号n

关于时间复杂度的问题,i=s=0; while(s<n) { i++; s+=i; }
这个你要看时间复杂度是怎么定义的,为了剔除机器和程序设计技巧对运行时间的影响,在计算时间复杂度时考虑的是运行的次数,正如你所说,上述问题的算出来是根号2n,根号2n又等于根号2乘以根号n,此时我们就认为它的复杂度是根号n,因为根号2可以看成是它的一个线性系数,随着输入规模n的增加是可以忽略的 ...

...时间复杂度 i=0,s=0; while(s<n) { i++; s+=i; } 的时间复杂度怎么算...
其实数学上的定义我也不用说了,简单来说就是通过求出该算法执行次数呗,通过观察while的条件,可以知道s和n作为循环条件,假设n是5050的话,是不是就是从1加到100啊,那不就是100次吗,就是设(上面的k和n写反了,呵呵,不好意思)n=1+2+...+k=(k*(k+1)\/2)=(k^2+k)\/2-->k*(...

下面程序段的时间复杂度为( A)。 i=s=0; while(s<n){
i=s=0; \/\/时间复杂度是O(1)while(s<n){ \/\/时间复杂度是O(n)i++; \/\/时间复杂度是O(n)s+=i; \/\/时间复杂度是O(n)}\/\/累计时间复杂度是O(1+n+n+n),即O(n)如有疑问请追问,如您满意请采纳,谢谢

while( s < n ) { i ++ ;s = s + i } 求时间复杂
时间复杂度为 o(n的开根号)因为这里s表示的是1+2+……的和且恰好逼近n i当计算到m时退出循环,此时 s=1+2+……+m=m*(m+1)\/2>=n且 1+2+……+(m-1)=(m-1)*m<n,因此m约等于n*2开根号。m的大小就是计算的次数,也就是复杂度 ...

i=s=0; while (s<n) { i++; s+=i; }?
那就是当i小于6时i,每次i都要自加1,直到i大于等于6停止循环。

程序时间复杂度计算 i=-1; s=0; while(s<n) { i=i+
而s=(1+(2k+1))*(k+1)\/2=(k+1)^2,k+1则为上述等差数列的项数,也是你的程序中while循环执行的趟数。求出k<根号n≤(k+1),因此循环执行根号n趟。则T(n)=2+5*n^0.5+1,解释一下T(n)这个式子,第一项2表示最开始的2个赋值操作;第二项中n^0.5表示循环的趟数,前面的系数5...

程序时间复杂度计算 i=-1; s=0; while(s<n) { i=i+
而s=(1+(2k+1))*(k+1)\/2=(k+1)^2,k+1则为上述等差数列的项数,也是你的程序中while循环执行的趟数。求出k<根号n≤(k+1),因此循环执行根号n趟。则T(n)=2+5*n^0.5+1,解释一下T(n)这个式子,第一项2表示最开始的2个赋值操作;第二项中n^0.5表示循环的趟数,前面的系数5...

相似回答