Skip to content

2025年 408 数据结构 第 1 题

数据结构2025年选择题2分

题目

以下 C 代码的时间复杂度是( )。

C
int count = 0;
for (int i=0; i*i<n; i++)
    for (int j=0; j<i; j++)
        count++;

错因

A

误以为外层循环条件 i*i<n 等价于"对数次循环"。i*i<n 等价于 ,外层共执行 次,是平方根级别而非对数级别——把"开方"和"取对数"混淆了。

C

把外层 次循环和内层"最多 "次循环又乘上一个 ,得到 的错误估计。这一步多出来的 没有任何来源——题中两层都是普通的递增循环,不存在二分或对数行为。

D

按"两层 for 循环 ≈ "的定式套出 。但本题外层只跑到 就结束,并非 次;只有当外层是 i<n 才会得到 。属于忽视循环上界、机械套模板的错误。

总解析

思路:内外层循环次数都依赖 ,需要把"内层执行次数"对外层求和。

外层循环:条件是 i*i<n,即 ,所以 ,共约 次。

内层循环:当外层为 时,内层 从 0 跑到 ,执行 次。

总执行次数

去掉常数因子,时间复杂度为

最终答案是 B

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数