二分查找 (binarySearch)
二分查找是一种快速检索数据的算法,也叫折半查找
作用
就是从数组中找出所需数的下标,如果所需数不在数组中,则返回-1
前提条件(重点)
二分查找的前提是数组中的元素是有序的,否则无法查找
使用二分查找时,如果数组未排序,不要忘记先排序再进行查找!!!
原理
二分查找法实际上就是每次都查中间的那个数。当前数比中间的数小,那么就在前半部分数据中查找;如果比比当前数大,就在后半部分数据中查找。按这个规律依次查找,直到找到最后一个是中间数。在这个过程中有匹配则表示查找到,binarySearch 返回位置的下标值,如果没匹配则返回-1。
代码
设置二分查找方法:
public static int search(int[] array,int value) {
int max = array.length-1;
int min = 0;
int mid = (max+min)/2;
while(array[mid]!=value) {
if(min<=max) {
if(array[mid]>value) {
max = mid - 1;
}else if(array[mid]<value) {
min = mid + 1;
}mid = (max+min)/2;
}else {
mid = -1;
break;
}
}
return mid;
}
测试:
public static void main(String[] args) {
int[] array = {5,22,99,87,12};
//先排序。别忘了!!!
Arrays.sort(array);
//调用二分查找方法
int search = search(array, 12);
System.out.println(search);
}
运行结果: