return 返回int型时,需要在while循环外面有个返回值。并且你定义int mid时,没有初始化值。 int min=0, max=arr.length-1, mid ;改成 int min=0, max=arr.length-1, mid =(max+min)>>1 ;先给定mid一个值。
public class ArrayTest4 {
public static void main(String[] args)
{
/*int[] arr={3,1,5,4,2,9};
int index=getIndex(arr, 2);
System.out.println("index="+index);*/
int[] arr={2,4,5,7,19,32,45};
int index=halfSearch_2(arr,7);
System.out.println("index="+index);
}
public static int halfSearch_2(int[] arr,int key)
{
int min=0, max=arr.length-1, mid =(max+min)>>1 ;
while(min<=max)
{
mid=(max+min)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else
break;
}
return mid;
}
} |