package com.qiu.test.interview;
/**
* 二分查找法 时间复杂度log2n 空间复杂度O(1)
*/
public class BinarySearch {
public static void main(String[] args) {
// int[]a={1};
int[]a={1, 2, 4, 5, 7, 8, 9};
int i = binarySearch(a, 0, a.length-1, 1);
System.out.println(i);
}
/**
*
* @param arr 数组
* @param left 起始索引
* @param right 结束索引
* @param finalvalue 查找值
* @return 查找值在数组中索引编号
*/
public static int binarySearch(int[] arr,int left,int right,int finalvalue){
if(arr==null||arr.length==0||left>right){
return -1;
}
int mid=left+((right-left)>>1);
if(finalvalue<arr[mid]){
return binarySearch(arr,left,mid-1,finalvalue);
}else if(finalvalue>arr[mid]){
return binarySearch(arr,mid+1,right,finalvalue);
}else{
return mid;
}
}
}
09-20
1705