简化O(nm)和O(n + m)时间复杂度

时间:2017-06-16 16:19:44

标签: javascript algorithm runtime time-complexity big-o

如果我有一个以O(nm)时间复杂度运行的函数,那么通常的做法/可接受的是将其简化为仅仅说O(n^2)时间复杂度?例如,像这样的函数:

function funcOne(nArray, mArray) {
    for (var i = 0; i < nArray.length; i++) {
        for (var j = 0; j < mArray.length; j++) {

            ....

        }
    }
}

另外,如果我有一个以O(n + m)时间复杂度运行的函数,通常的做法/可接受的是将其简化为仅仅说O(n)时间复杂度?例如,像这样的函数:

function funcOne(nArray, mArray) {
    for (var i = 0; i < nArray.length; i++) {

        ...

    }

    for (var j = 0; j < mArray.length; j++) {

        ...

    }
}

1 个答案:

答案 0 :(得分:-1)

您提供的样本与O(N)复杂性有关,因为循环是按顺序执行的。如果你把一个循环放到另一个循环中,那就是O(N ^ 2)复杂度。那么n和m呢?当然,如果n和m之间存在关系,则通过n和m表示N可能是一件棘手的事情。为简单起见,您可以将N视为n和m的平均值,即N =(n + m)/ 2