第 1 题
数据结构下列程序段的时间复杂度是()。
count = 0;
for (k = 1; k <= n; k *= 2)
for (j = 1; j <= n; ++j)
++count;
A.
B.
C.
D.
查看答案与解析
参考答案:C
答案:C。
计算嵌套循环时,应先分别数执行次数,再考虑内循环是否随外层变量变化。外层 k 从 1 开始依次为 1、2、4、8……,第 t 次的值为 ,满足 ,所以共执行 次。
每次内层 j 都从 1 到 n,与 k 无关,因此每轮恰执行 n 次 ++count。总次数为 ,时间 ,选 C。A 只算外层,B 只算一轮内层,D 把外层误认为线性增长。k*=2 与 k++ 的循环次数有本质区别;题目按通常复杂度模型忽略整数溢出。