首页 > 解决方案 > 在 for 循环中分析时间复杂度

问题描述

我想问为什么有些人说我们应该将 for 循环中的内容与n相乘,而其他人说我们必须与n相乘然后加上“1”,因为我们有停止语句,例如 i < n。

for(int i = 0 ; i < n ; i ++){
    // Code
}

因此,有人说我们必须将Code与“n”相乘,因为它重复 n 次,并让它像这样,所以我们将有 TimeInsideLoop n 次循环,即 O(n)。其他人说我们必须在乘法后加 1,因为最后 i 和 n 之间的最后比较i < n会停止循环,所以我们将 TimeInsideLoop n+1 用于循环。

但我的问题是,如果我们想在计算时间复杂度时如此精确,为什么不添加 TimeInsideLoop*n + 2,因为我们i = 0一开始就有。

因此,我们将//CodeTimeInsideLoop 与 n 相乘,因为它会发生n 次,然后对于最后一个比较,我们将添加另一个“1”,因为它是恒定时间,并且因为在循环开始时我们声明了一个新的变量i = 0 我们再加 1,所以我们会有 TimeInsideLoop*n+2。

标签: performancetimetime-complexity

解决方案


推荐阅读