黑马程序员技术交流社区
标题:
为什么我写的折半查找 找不到中间值...?求帮助
[打印本页]
作者:
蒋昌宏
时间:
2012-2-26 00:37
标题:
为什么我写的折半查找 找不到中间值...?求帮助
class find{
public static void main(String args[]){
int x[] = {22,33,44,55,66,77,88};
int search = searchValue2(x,55);
System.out.println("["+search+"]");
}
public static int searchValue(int x[],int search){
int max = x.length - 1;
int min = 0;
int avg = (max+min)>>>1;
while(x[avg] != search){
if(search>x[avg]){
min = avg+1;
}
else if(search<x[avg]){
max = avg-1;
}
if(min>max)
return -1;
avg = (max+min)>>>1;
}
return avg;
}
public static int searchValue2(int x[],int search){
int max = x.length-1;
int min = 0;
int avg = (max+min)>>>1;
while(max>=min){
if(search > avg){
min = avg+1;
}
else if(search < avg){
max = avg-1;
}
else
return avg;
avg = (max+min)>>>1;
}
return -1;
}
}
只要不是取中间标识位的数就都OK,一取中间标识位的数就成-1了~~~
作者:
蒋昌宏
时间:
2012-2-26 00:50
我又了然了..................我把下标和实际值比大小 所以全返回-1 囧~~
if(search > avg){
min = avg+1;
}
else if(search < avg){
max = avg-1;
}
else
return avg;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2