二分法查找-代码实现

public class ArrayTest2 {
    public static void main(String[] args) {
        int dest = 45;
        int[] arr1 = new int[]{-98, -97, -26, -21, 3, 7, 19, 23, 45, 47, 57, 89, 93, 98};
        int resultIndex = binarySearch(arr1, dest);
        System.out.println("result:" + resultIndex);

    }

    static int binarySearch(int[] arr, int dest) {

        int startIndex = 0;
        int endIndex = arr.length;
        while (startIndex < endIndex) {
            //中间的索引值,动态的
            int middle = (startIndex+ endIndex) / 2;
            //如果目标值小于中间值,则结束索引等于中间的索引,也就是说从左侧的列表中找
            if (dest < arr[middle]) {
                endIndex = middle;
            } else if (dest > arr[middle]) {
                //如果目标值大于中间值,则开始索引等于中间的索引,也就是说从右侧的列表中找
                startIndex = middle;
            } else {
                return middle;
            }
        }

        return -1;
    }
}

推荐阅读更多精彩内容