public class BinarySelect {
public static void main(String[] args) {
int[] arr = {1,3,6,7,9,11,14,19,22};
int k = 3;
Integer index = getIndexByBinarySelect(arr,k);
System.out.println(index);
}
/**
* 二分查找法
* @param arr 有序数组
* @param k 要查找的数
* @return 在数组中的索引
*/
private static Integer getIndexByBinarySelect(int[] arr,int k){
int startIndex = 0;
int endIndex = arr.length-1;
while(startIndex<=endIndex){
int midIndex = (startIndex + endIndex)/2;
if(arr[midIndex]>k){
endIndex = midIndex-1;
}else if(arr[midIndex]<k){
startIndex = midIndex+1;
}else{
return midIndex;
}
}
return null;
}
}