class zheban
{
public static void main(String args[])
{
int [] arr={2,6,8,10,12,18,};
int index=array(arr,10);
System.out.println("index"+index);
}
public static int array(int[] arr,int key)
{
int min=0;
int max=0;
int mid=0;
max=arr.length-1;
mid=(max+min)/2;
class zheban
{
public static void main(String args[])
{
int [] arr={2,6,8,10,12,18,};
int index=array(arr,10);
System.out.println("index="+index);
}
public static int array(int[] arr,int key)
{
int min=0;
int max=arr.length-1;
int mid=(max+min)/2;
while (arr[mid]!=key)
{
if (key>arr[mid])
{min=mid+1;}
else if (key<arr[mid])
{max=mid-1 ;}//这步注意了 应该是max而不是min
mid=(max+min)/2;//这步缺少了,用于计算下一次折半的中位数
/*下面这2步是用于判断折半排序的终止的,你之前的代码因为没有
这2个步骤,所以一直停留在while()循环当中*/
if(min>max)
return -1;
}
return mid;
}
}