这两个功能的大O.

时间:2014-11-03 05:08:03

标签: algorithm loops recursion big-o time-complexity

有人可以帮我找到这两个函数的Big-O:

int sum(int A[], int i, int n) {
    if (n == 1)
        return A[i];
    return sum(A, i, n/2) + sum(A, i + n/2, (n+1)/2);
}

和'sort'函数:

void swap(int& a, int& b) {
    int temp = a;
    a = b;
    b = temp;
}

void swapMin(int A[], const int& index) {
    int indexMin = index;
    for (int i = index-1; i >= 0; --i)
        if (A[i] < A[indexMin])
          indexMin = i;

    swap(A[index], A[indexMin]);
}

void sort(int A[], int n) {
    for (int i = n-1; i >= 0; --i)
        swapMin(A, i);
}

我相信第一个是O(1),第二个是O(n),但我不确定这是否正确。

1 个答案:

答案 0 :(得分:2)

对于第一个功能,您可以这样做:

enter image description here

然后你可以使用生成函数来解决它。

对于第二个,您可以使用Sigma表示法:

enter image description here