我一直在做一些问题,但没有提供答案,所以我想知道我的答案是否正确
a) 假设 a[i....j] 是一个具有 n 个元素的整数数组并且 x 是一个整数
int front, back;
while(i <= j) {
front = (i + j) / 3;
back = 2 * (i + j) / 3;
if(a[front] == x)
return front;
if (a[back] ==x)
return back;
if(x < a[front])
j = front - 1;
else if(x > a[back])
i = back+1;
else {
j = back-1;
i = front + 1;
}
}
我的答案是 O(1),但我觉得我错了。
二)
public static void whatIs(int n) {
if (n > 0)
System.out.print(n+" "+whatIs(n/2)+" "+whatIs(n/2));
}
ans:我不确定是 log4n 还是 logn,因为递归发生了两次。