【发布时间】:2014-11-03 05:08:03
【问题描述】:
谁能帮我找出这两个函数的 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);
}
以及“排序”功能:
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),但我不确定这是否正确。
【问题讨论】:
-
你必须问一个更精确的问题 - StackOverflow 不是要求人们为你做你的工作;描述您尝试过的内容以及您遇到的问题。 FIY,第一个是 O(n - i),第二个是 O(n^2)
标签: algorithm loops recursion big-o time-complexity