本帖最后由 JYcainiao 于 2015-10-9 00:33 编辑
//定义一个函数 用来折半查找一个数在数组的位置
class zhebanArr
{
/*
public static int zheban(int[] arr,int key)
{
int max,min,mid;
max = arr.length-1;
min = 0;
mid = (min+max)/2;
while(arr[mid]!=key)
{
if(arr[mid]>key)
max=mid-1;
else if(arr[mid]<key)
min=mid+1;
mid = (min+max)/2;
}
return mid;
}
*/
public static void main(String[] args)
{
//int[] arr = new int[]{10,9,8,7,6,5,4,3,2,1};
int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10};
int x=zheban(arr,8);//调用折半查找
System.out.println(x);//打印该数的角标
}
public static int zheban(int[] arr,int key)
{
int min=0,max=arr.length-1,mid;
//while(min<=max) //通过循环中角标判定key在不在数组内
while(arr[min]>=key && arr[max]<=key) //直观通过数组看key在不在数组内 因为折半查找
//都是有序数组
这个是判断条件 忘记了 肯定不可以了
{
mid=(max+min)/2;
if(arr[mid]>key)
max=mid-1;
else if(arr[mid]<key)
min=mid+1;
else
return mid;
}
return -1;
}
}
/*
红色部分为啥不行呢?
*/
|
|