class ArrayTest3
{
public static void main(String[] args)
{
int [] efg={1,2,3,4,5,6,7,8};
int other=halfIndex(efg,12); //问题点。。。。。。。。。。:当这里值超出范围的时候,other2在运行的时候就不出结果了,不是很理解原因。
System.out.println("other="+other);
System.out.println(efg[other]);
int other2=halfIndex_2(efg,6);
System.out.println("other2="+other2);
System.out.println(efg[other2]);
}
public static int getIndex(int[] arr,int key )
{
for (int x=0;x<arr.length-1 ; x++)
{
if (arr[x]==key)
return x;
}
return -1;
}
/*
折半查找法,这种查找法,要求数组中的元素必须是有序的。
*/
public static int halfIndex(int[] arr,int key )
{
int min = 0;
int max=arr.length-1;
int mid=(min+max)/2;
while(arr[mid]!=key)
{
if (key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(min+max)/2;
}
return mid;
}
/*
折半查找第2种方法法,这种查找法,要求数组中的元素必须是有序的。
*/
public static int halfIndex_2(int[] arr,int key )
{
int min = 0, max=arr.length-1,mid;
while(min<=max)
{
mid=(min+max)>>1;
if (key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
else if(key==arr[mid])
return mid;
}
return -1;
}
} |