二分查找算法:数据源必须是有序数组,时间复杂度为O(logN)
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
System.out.println(binarySearch(arr,8));
}
public static int binarySearch(int arr[], int data){
int low = 0;
int height = arr.length-1;
while(low<=height){
int mid = low + (height-low)/2;
if(arr[mid]>data){
height = mid -1;
}else if(arr[mid]<data){
low = mid + 1;
}else{
return mid;
}
}
return -1;
}