下列程序段的时间复杂度为
3.下列程序段的时间复杂度为( )
i=0;s=0;
while(s<n)
{i++;
s=s+i;
}
A.O( )B.O(log2n)
C.O(n)D.O(n2)
[解决办法]
我猜是C,但是不紧确啊
[解决办法]
应该是O(√n)吧。
[解决办法]
根号n
[解决办法]
运行多少次,要看s需要多少步才能累加到n,由于s的步长每次都增加1
于是有:0+1+2+……+x=n,算出x就可以知道有多少步了
这是等差数列,于是:
(1+x)*x/2 = n
可以算法复杂度是n^1/2
[解决办法]
n^1/2
lz,看你这几天提问,你是在准备应付考试吧。