class demo4
{
public static void main(String[] args)
{
int[] arr={2,3,4,5,6,7,9,10,11,12,13,14,15,16,17,18,19};
int index=findindexArr(arr,8);
System.out.println("index="+index);
}
public static int findindexArr(int [] x,int y)
{
int min=0,max=x.length-1,mid;
while(min<=max)
{
mid=(max+min)/2;
if (y>x[mid])
mid=mid+1; // 这个地方,你就算把mid设置为了加一,等它
// 程序执行后一样循环到 mid=(max+min)/2 ,总的来说,程序就一直死循环着,
else if(y<x[mid])
mid=mid-1; // 这个地方也是一样
else
return mid;
}
return -1;
}
解决方法:
public static int findindexArr(int [] x,int y)
{
int min=0,max=x.length-1,mid;
while(min<=max)
{
mid=(max+min)/2;
if (y>x[mid])
min=mid+1; // 该为这个