我被告知要找出这段代码的效率,我们花了大约 1 个小时(我和我的伙伴)试图找出这段代码的真正作用。
我们认为这是一种搜索算法,但我们真的找不到一种方法让它在不进入无限循环的情况下工作:
int busq(int *v, int x, int b, int a){
int m1, m2;
int result;
m1 = (b+a) / 3;
m2 = 2*m1;
if (v[m1] == x)
result = m1;
else
if (v[m2] == x)
result = m2;
else
if (x<v[m1])
result = busq(v, x, b, m1-1);
else
if (x>v[m2])
result = busq(v, x, m2+1, a);
else
result = busq(v, x, m1+1, m2-1);
return result;
}
这就是我们得到的全部内容,参数 a、b 或 x 没有值,*v (向量)的大小或向量的内容也没有。
应该可以这样解决。
如果我们想知道这段代码的作用,但如果您能告诉我们效率,我们也将不胜感激。(我们使用 O() 表示法 EJ:O(1), O(n^2)...)