二分法查找-代码实现

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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容