简单的二分查找算法java实现

一个二分查找的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

你可能感兴趣的:(简单的二分查找算法java实现)