解释为什么此算法为n ^ 2

时间:2018-09-30 10:13:17

标签: algorithm time runtime time-complexity

在为这段代码的运行时间争论时遇到了一些麻烦。我知道代码在O(n ^ 2)运行,但是有人告诉我解释原因。我认为我需要对此进行一些计算,但是我被卡住了。 我需要弄清楚的算法(伪代码)。

    count = 0                        1
    for i = 0 to n-2                 n
        for j = 1 to n               n^2
            if A[j]<A[i]             1
                count = count + 1    1

我也写了我认为每行的运行时间。但是,我不知道这是否正确。

2 个答案:

答案 0 :(得分:1)

外部循环从0到n-2

除去外部循环中的常量,可以说它将循环n次。 对于外循环中[0..n-2]范围内的每个数字,内循环从[1..n]进行迭代

if i=0, inner loop runs from 1 to n,
if i=1, inner loop runs from 1 to n,
.
.
.
till  i=n-2, inner loop runs from 1 to n,

因此时间复杂度为(外循环*内部循环)= O(n*n),即O(n^2)

答案 1 :(得分:0)

外部for循环恰好迭代n-1 = O(n)次。在外部for循环的每次迭代中,内部for循环精确地迭代n = O(n)次,因此总体上迭代O(n^2)次。内循环内部完成的工作是恒定时间O(1)。因此,由于我们重复了O(n^2)O(1)次工作,因此总体时间复杂度为O(n^2)