时间复杂度 - 递归调用

时间:2013-12-01 11:58:53

标签: java time time-complexity code-complexity

我试图了解如何计算算法的时间复杂度。

我有这段代码: 这是整个方法:

public void solve(int i) {
    if(i < 2) {
        return;
    }
    solve(i-1); //recursive call
    int x = v[n-i];
    for(int j = n-i+1; j < n; j++) {
        if(x > v[j]) {
            count++;
        }
    }
    return;
}

我认为复杂性是O(n)。我对吗?

由于

2 个答案:

答案 0 :(得分:0)

复杂性应为O(N^2),因为在最坏的情况下,您将进行N + (N-1) + (N-2) + 1 = N ( N + 1 ) / 2次迭代。

答案 1 :(得分:0)

复杂性为O(i^2)n无论如何。

该函数将运行i次(直到i<2)。每次迭代将运行i次(n-(n-i + 1)= i-1)。

我们可以在O(N^2)提及N时将其称为i

注意! Nn在这里不一样!