public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[]={1,12,13,45,56,84,98};
int index=getchaban(arr, 84);
System.out.println(index);
}
/*
折半查找法:一个有序的数组,查找某一个数,利用角标确定性来查找
三个记录角标的值分别是max最大 最小min mid中间
arr[] 对数组中的数进行循环判断,若判断的数大于mid 则min等于mid+1
相反则max-1 再次进行折半 若max《min 输出-1
定义一个函数,求取折半查找值
有返回值。类型是int
未知参数是一个数组,一个查找的数
*/
public static int getchaban(int[] arr,int key)
{
int max=arr.length;
int min=0;
int mid=(max+min)/2;
while(arr[mid]!=key)
{
if(arr[mid]<key)
min=mid+1;
else if(arr[mid]>key)
max=mid-1;
if(max<min)
return -1;
}
return mid;
}
}
|
|