有人可以帮我找到这两个函数的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),但我不确定这是否正确。
答案 0 :(得分:2)
对于第一个功能,您可以这样做:
然后你可以使用生成函数来解决它。
对于第二个,您可以使用Sigma表示法: