/**
* @author Administrator
*二分查找法:
* 特点:
* 1.该数组是已经排好序的
* 2.效率还是比较高的
*/
public class BinSearch {
//{2,3,4,5,7} 6
public static int binSearch(int [] arr ,int key){
int start =0;
int end =arr.length-1;
int mid=(start+end)/2;
while(start<=end){
if(arr[mid]<key){
start=mid+1;
mid=(start+end)/2;
}
if(arr[mid]>key){
end=mid-1;
mid=(start+end)/2;
}
if(arr[mid]==key){
return mid;
}
}
//执行完后依然没有跳出,则说明该数组中不包含该key
return -1;
}
//测试二分查找
public static void main(String[] args) {
int [] arr={2,3,4,5,7};
System.out.println("该数组中是10的位置:"+BinSearch.binSearch(arr, 10));
System.out.println("该数组中是5的位置:"+BinSearch.binSearch(arr, 5));
}
}
输出结果:
该数组中是10的位置:-1
该数组中是5的位置:3