二分查找的前提是,已知的数组是按顺序排列,这种方法相对来说比较高效一点
public class serchMidd {
/*** 二分查找算法
*
* @variable a 有序数组
* @variable sec 查找元素
* @variable sec的数组下标,没找到返回-1
*/
public static void main(String [] args){
int [] a = {1,3,5,6,8,9};
int low=0;
int high=a.length-1;
int sec=6;
while(low<=high){ //判断是否查找完,如果最低位大于最高位 说明已经查找完整个数组
int midd=(low+high)/2;
if(sec==a[midd]){
System.out.print(midd);
return; //查询到元素后返回角码并结束
}
else if (sec<a[midd]){ //判断中间值与查找元素的大小关系,如果小于中间值,就把最高位重新定义为中间位减去1
high=midd-1;
}
else{ //判断中间值与查找元素的大小关系,如果大于中间值,就把最高位重新定义为中间位加1
low=midd+1;
}
}
System.out.println("-1");
}
}