时间复杂度为O(n^05),即根号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+5n^05+1,解释一下T(n)这个式子,第一项2表示最开始的2个赋值 *** 作;第二项中n^05表示循环的趟数,前面的系数5表示每趟有5个基本 *** 作:一次循环条件判断、两次加法、两次赋值;第三项的1表示最后的一次循环条件判断(因不满足条件但没执行该趟循环)。所以T(n)=5n^05+3,所以O(T(n)=O(5n^05+3)=O(n^05)。
运行次数:9次
时间复杂度:O(1)
因为这个程序循环次数只是有限次,其他赋值以及输出 *** 作时间复杂度只按1算,加起来还是等于一个常数,故时间复杂度为O(1);
如果将s<10改为 s<n,那么时间复杂度将会是O(n)
O(n),一重循环,并且循环次数和n线性相关。
要计算的话就是:
循环中的基本语句执行次数T(n)=2(n-1)=2n-2,
存在正的常数c,n0使得对于任意n>=n0时有T(n)<=cn,
所以这个时间复杂度是O(n)
以上就是关于程序时间复杂度计算 i=-1; s=0; while(s<n) { i=i+全部的内容,包括:程序时间复杂度计算 i=-1; s=0; while(s<n) { i=i+、计算以下程序的运行次数和时间复杂度,主要说一下详细过程,我是C语言数据结构的初学者、麻烦告知一下怎么算下列程序段的时间复杂度,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)