所以说我有一个这样的算法:
void dummy_algorithm(int a[]) {
int center = floor(a.length/2);
//For reference purposes: Loop 1
for(int i = 0; i < center; i++) {
//The best code you've ever seen
}
//Loop 2
for(int j = center + 1; j < a.length; j++) {
//Slightly less awesome code
}
}
这是非常基本的东西。我知道两个循环都遍历数组的一半,从而给每个循环一个 (n/2) 复杂性。但是,该方法所做的总工作显然是 O(n)。
所以,我的问题是:我如何证明(通过递归关系)这个算法是 O(n)?还是我完全错了?
注意:我不能将两个循环合二为一。它们执行最终进入递归调用的操作。其他你能想到的都是不允许的。这个问题有很多限制。