分析程序段的时间复杂度 **时间复杂度 ≠ 代码跑了多少毫秒它算的是当输入规模 n 趋近无穷大时算法执行操作数的增长量级。只关心趋势100n 和 n 都是线性增长 → 都记为 O(n)只保留最高阶n² 100n 1000 → 只看 n² → O(n²)忽略常数和底数log₂n、log₃n 都是对数级 → 统一记为 O(log n)**判断时间复杂度本质是统计代码执行的 “操作次数” 随输入规模 n 的增长趋势并取其最高量级作为复杂度。基本操作赋值、加减乘除、比较、数组访问等一次算 1 次操作。大 O 表示法只保留增长最快的项忽略常数系数和低阶项。例2n² 3n 5 → 最高阶是 n² → 复杂度为 O(n²)例5log₂n 10 → 最高阶是 log₂n → 复杂度为 O(log n)大招按代码结构分类判断顺序结构无循环、无分支2. 所有语句都是常数次操作时间复杂度为 O(1)3. x 10;y x 20;printf(“%d”, y);单层循环**循环次数和 n 成正比 → O(n)例c运行for (i 0; i n; i) {a[i] 0; // 每次循环1次操作}循环执行 n 次 → 复杂度 O (n)特殊情况循环变量按倍数增长 / 减少 → O(log n)c运行i 1;while (i n) {i i * 2; // 每次翻倍}循环次数满足 2^k ≤ n → k log₂n → 复杂度 O (log n)