public class Test {
public static void main(String[] args) {
int data [] = new int[]{1,3,4,7,9,11,55,66,77};
// 折半查找必须是有序数组
int index = halfSearch(data,11);
System.out.println("index= "+index);
}
// 折半查找方法
public static int halfSearch(int data [] ,int key){
int max ,min,mid;
min =0; // 数组脚标从0开始
max =data.length-1; // 数组脚标 代表数组的最大值
mid = (max+min)/2; // int类型
while (data[mid]!=key){
if(key>data[mid]){
min = mid+1;
// key大于中间值 则最小值 = 中间值+1
}
else if(key<data[mid]){
max = mid-1;
}
if(max<min){
return -1;
// 最大值比最小值 小的话,编译错误 返回-1
}
mid = (max+min)/2;
// 如果上述都不满足 那继续中间值折半分
}
return mid;
// 全部满足的话,返回mid
}
// 获取index
public static int index(int data[],int key){
for(int x=0;x<data.length;x++){
if(data[x]==key) // 如果关键字匹配的话 直接返回x
return x;
}
return -1;
}