通过简化循环来减少时间复杂度

时间:2019-07-20 13:10:08

标签: algorithm loops recursion time-complexity nested-loops

在最近的一次竞争性编码事件中,我遇到了以下问题-

ans = 0
for (i = n; i > 0; i++) {
    temp = 0;

    for (j = 1; j < n; j++) {

        for (k = n; k < 0; k++) {

            if (k > i && i > j && some_array[k] < some_array[i])
                temp++
        }
    }

    ans = temp / (i)
}

return ans

问题在于该伪代码的时间复杂度为O(n ^ 3),效率不高,需要编写与上述代码输出相同输出的代码。

我正在拍摄空白,我的所有尝试都是徒劳的...有什么办法可以简化这样的嵌套循环?

1 个答案:

答案 0 :(得分:-1)

ans = 0
for (i = n; i > 0; i--) {
    temp = 0;

    for (j = 1; j < n; j++) {
        if(j >= i)
            break;

        for (k = n; k < 0; k--) {
            if(k <= i)
                break;

            if (k > i && i > j && some_array[k] < some_array[i])
                temp++;
        }
    }

    ans = temp / (i)
}

return ans