如何在 big-o 中找到算法的运行时间

How to find runtime of algorithm in big-o

public void do() {
    for (int i = 0; i < rows; i++)
        for (int j = 0; j < columns; j++)
            // do something

    for (int i = 1; i < rows - 1; i += 2)
        for (int j = 1; j < columns - 1; j += 2) {
            // do something

    for (int i =  50; i > 0; i--)
        // do something

    for (int i = 1; i < rows - 1; i++)
        for (int j = 1; j < columns - 1; j++)
            // do something
}

在这种情况下,行和列将等于:

rows = (size * 10) + 1;
columns = rows + 10;

其中 size (n) 为 1、2、4 或 8。

由于 rowscolumns 变量的大小会增加,并且每个循环都会 运行 遍历行,然后遍历循环内的列,我可以这样说吗函数将 运行 in O(n^2)?

我对算法的整体复杂性还很陌生,希望对此有一些意见。非常感谢。

直接回答您的代码: What is the Big-O of a nested loop, where number of iterations in the inner loop is determined by the current iteration of the outer loop?

N 用于一个循环,所以两个嵌套 = N^2,等等。如果嵌套循环中有 2 条指令,实际上是 2N^2,但是乘以 2 是有用的,所以 N ^2 无论如何。