二分查找法
二分查找法又叫折半查找法,通过给定一个数,然后把这个数和数组中的中间值进行比较。
重要理解mid,min,max索引的变化就ok了!
原理:当要查找的数(key)比中间值(arr[mid])要小的时候,max就要=mid-1,当要查找的数(key)比中间值 (arr[mid])要大的时候,min就要=mid+1,同时mid必须要重置,即mid=(min+max)>>1;
如果min>max的话,这时就要返回-1,表示数组中没有你要查找的数(key)。
例如:看图
代码:
//二分查找
public static int HalfSearch(int [] arr,int key){
min=0;
max=arr.length-1;
mid = (min+max)>>1;
while(key!=arr[mid]){
if(key<arr[mid]){
max = mid-1;
}else if(key>arr[mid]){
min = mid+1;
}
mid = (min+max)>>1;
}
return arr[mid];
}
然后就直接在主方法中调用就可以了。