数组的高级二分查找(前提是数组必须要按大小顺序从小到大排列)。。。。。

 

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;
}

}

posted @ 2018-05-06 17:05  sun丶凹凸曼  阅读(507)  评论(0编辑  收藏  举报