二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
时间复杂度 O(log2n)
图解
代码:
/*
* 查找:
* 基本查找----数组元素无序,从头查到尾
* 二分查找----数组元素有序,也叫折半查找,无序数组不能使用
*
*
*/
public class BinarySearch {
public static void main(String[] args) {
int [] arr= {11,22,33,44,55,66,77,88,99,};
int index=BinarySearch(arr,33);
System.out.println(index);
}
public static int BinarySearch(int []arr,int value){
int min=0;
int max=arr.length-1;
int mid=(max+min)/2;
while(value!=arr[mid]) {
if(value>arr[mid]) {
min=mid+1;
}else {
max=mid-1;
}
mid=(max+min)/2;
}
return mid;
}
}