一个二分查找的java实现,
查找value 在 有序数组(由小到大)中的 下标。
时间复杂度为 O(logn)
/**
* @author river
* @date 2019/1/18 13:21
**/
public class BinarySearchDemon {
/**
* 简单的二分查找方法
* @param nums 从小到大的有序数组
* @param value 需要查找的value
* @return 返回value在数组中的下标,没有返回 -1
*/
public static int bSearch(int[] nums ,int value){
int startIndex = 0;
int lastIndex = nums.length -1;
int middle ;
do{
middle = (lastIndex + startIndex)/2;
if(value == nums[middle] ){
return middle;
}
if(nums[middle] < value){
startIndex = middle + 1;
}
if(nums[middle] > value){
lastIndex = middle -1;
}
}while (startIndex <= lastIndex);
return -1;
}
public static void main(String[] args) {
int[] b = {1,12,32,43,55,56,57,60,69,80};
System.out.println(BinarySearchDemon.bSearch(b,55));
}
}
执行结果
4
网友评论