数组的高级二分查找(前提是数组必须要按大小顺序从小到大排列)。。。。。
public class Demo01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//数组的高级二分查找
int[] arr = {11,22,33,44,55,66,77};
//查找的数
int find = 88;
int index = getIndex(arr, find);
System.out.println(find + "出现的位置:" + index);
}
/***
*
* @param arr int数组
* @param find 查找的数
* @return -1:代表没有找到
*/
public static int getIndex(int[] arr,int find){
//计算索引
int min = 0;
int max = arr.length - 1;
int mid = (min + max)/2;
while(arr[mid] != find){//中间的数与查询的数不一样
//如果22
if(find < arr[mid]){
max = mid - 1;
}else{
min = mid + 1;
}
mid = (min + max) / 2;
if(min > max){
return -1;
}
}
return mid;
}
}
付明旭