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

求解代码时间复杂度上下界(Big-O与Big-Omega)的思路是否正确?

时间复杂度分析解答

首先看你提供的代码:

for (i = n; i > 0; i -= 2) {  
    if (i % 2 == 0) {  
        q = i;  
        while (q != 0) {  
            q -= 2;  
        }  
    }
}

你的核心结论是正确的,不过可以补充一些细节让分析更严谨:

关于下界Ω(n)

你说的下界结论没问题,但最佳情况不止n=1的场景:当n为奇数时,外层循环的i取值为n, n-2, ..., 1,全是奇数,if (i%2==0)的条件永远不成立,内层循环一次都不会执行。此时外层循环执行⌈n/2⌉次,每次都是常数时间操作(循环条件判断、i递减、if条件判断),总时间复杂度为Θ(n),这说明算法的时间开销至少是线性的,因此下界Ω(n)的结论成立。

关于上界O(n²)

这个结论完全正确。当n为偶数时,外层循环的i取值为n, n-2, ..., 2,全是偶数,每个i都会触发内层循环。内层循环对于i来说,会执行i/2次(从i减到0,每次减2)。总执行次数为:
$$\sum_{k=1}^{n/2} k = \frac{(n/2)(n/2 + 1)}{2} = \Theta(n^2)$$
因此最坏情况下时间复杂度为Θ(n²),上界O(n²)的结论成立。

总结:你的核心判断(下界Ω(n)、上界O(n²))是正确的,只是对最佳情况的描述可以扩展到所有奇数n的场景,而非仅n=1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:42:50