第 1 题
数据结构以下 C 代码的时间复杂度是多少?()
int count = 0;
for (int i=0; i*i<n; i++)
for (int j=0; j<i; j++)
count++;
A. O(log2n)
B. O(n)
C. O(nlogn)
D. O(n2)
查看答案与解析
参考答案:B
题目详解:
要分析这段代码的时间复杂度,我们需要仔细查看两个嵌套的 for 循环。
-
外层循环的条件是
i*i < n,即i < sqrt(n)。因此,外层循环的迭代次数为 次。 -
内层循环的条件是
j < i,即内层循环的迭代次数取决于当前的i值。具体来说,当i为 0 时,内层循环执行 0 次;当i为 1 时,执行 1 次;当i为 2 时,执行 2 次,依此类推,直到i为 时,执行 次。 -
因此,内层循环的总执行次数可以表示为:
-
这个求和公式的结果是 ,忽略低阶项和常数系数后,时间复杂度为 。
综上所述,这段代码的时间复杂度是 。
正确答案:B




