i = 1;
while(i<=N)
i = i * 3;
简单点模拟一下每次循环里面s的值:第一次执行完s+=i
s == 1
第二次s == 3 == 1+2
第三次s == 6 == 1+2+3
第四次s == 10 == 1+2+3+4
第k次 1+2+3+4+...+k == k*(k+1)/2
那么当k*(k+1)/2 >=n 的时候停止
也就是k == (根号(8*n+1) - 1 ) /2
关于n的表达式是 根号的, 所以复杂度是 根号n
还有不懂得欢迎继续hi我
此题运行时间取决于n的大小,计作:T(n) = n时间复杂度为:O(n)
定义:
若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。
记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)