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

时间复杂度咨询:执行次数随输入增长但有上限的函数属于O(n)还是O(1)?

时间复杂度归类问题:O(n)还是O(1)?

当函数的语句执行次数随输入规模增长但存在明确上限时,该函数的时间复杂度应该归类为O(n)还是O(1)?以下是示例代码:

void func(int n)
{
    if (n > 1000)
    {
        for (int i = 0; i < 1000; i++)
        {
            //do thing
        }
    }
    else
    {
        for (int i = 0; i < n; i++)
        {
            //do same thing
        }
    }
}

解答

  • 结论:该函数的时间复杂度是O(1)。
  • 核心原因:大O表示法描述的是输入规模n趋近于无穷大时的渐近行为。这个函数里,不管n多大,循环执行的次数最多就是1000次——n≤1000时循环跑n次,n>1000时固定跑1000次,不会随着n的无限增大而持续增加。
  • 关键逻辑:大O分析看的是增长趋势,当执行次数有固定常数上限时,就属于常数时间复杂度O(1),而非线性时间O(n)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:57:13