java - 嵌套 while 循环的大 O 符号解释

标签 java math big-o

我想知道以下 (java) 代码的大 o 表示法是什么:

while (n > 0) {
     while (n > 0){
        n-- ;
    }
 } 

如果我使用 n = 10,它将在外循环中执行一次迭代,在内循环中执行 10 次迭代。
那么总共11 次迭代 对吗?
如果我使用 n = 100 它将在外循环中进行一次迭代,在内循环中进行 100 次迭代。
那么总共 101 次迭代 对吗?
但这就是我卡住的地方。因为我认为符号是 O(n)。仅仅是因为我认为迭代几乎等于 n。 但是不知道怎么证明?

我不太懂数学,所以需要一个清晰的解释

最佳答案

通俗地说,对于正参数,外循环正好进行一次迭代,因为在内循环中 n 减少到零。内循环将进行 n 次迭代,因此内循环的运行时复杂度为 O(n)。总的来说,虽然外层循环的终止条件在语法上依赖于n,但实际上它独立于n。整体复杂度可以看作是O(n+c),其中c是一个常量,表示外层循环的执行。但是,O(n+c) 等于 O(n)

您可能感到困惑的是,在您的术语中,您说的是一个循环的 101 次迭代,实际上您指的是两个不同的循环。

关于java - 嵌套 while 循环的大 O 符号解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39161951/

相关文章:

Java从文件中读取数组

java - 为什么Spring的PropertySource会抛出FileNotFoundException?

c++ - 计算矩阵的 n 次方

algorithm - 德劳内 : Triangulate two point sets with the best fitting mesh

algorithm - 对 O(n) 中的 m 组总 O(n) 元素进行排序

java - JFreeChart:使用 ChartMouseListener 和鼠标移动在 ChartPanel 中动态选择点

java - Groovy 模式匹配问题

javascript - 24小时内正态分布负载,中午高峰?

java - 该算法不会在 O(m log n) 中运行吗?

java - 如何在迭代时向作为 HashMap 值的 ArrayList 添加内容?