You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

该C++循环的时间复杂度应为O(1)还是O(n)?

这段C++代码的时间复杂度分析

首先看这段代码(注意原代码里namesppace是拼写错误,正确应为namespace):

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n = 100;
    for(int i = 0; i < n; i++) {
        cout << "hello";
    }
}

关于时间复杂度的争议,核心要回到复杂度的定义:它衡量的是算法运行时间随输入规模增长的变化趋势,关键看是否存在和输入相关的变量决定执行次数。

  • 原代码里的n=100是硬编码的常量,没有外部输入的规模变量,所以严格来说时间复杂度是O(1)——不管数值是100还是1e9,只要是写死的固定值,执行步骤数就是确定的常数,不会随任何输入规模变化而增长。
  • 你觉得是O(n),是把代码里的变量名n当成了“输入规模参数”。如果这段代码的n是通过外部输入(比如cin >> n)获取的,那此时n是输入规模,复杂度才是O(n)。但现在n是固定常量,和输入无关,不能用O(n)描述。

内容的提问来源于stack exchange,提问作者SxreaM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 01:07:34