java简单实现二分法查找

public static void main(String[] args) {
        // 准备数据,注意一定是有序不重复的数组
        int[] arr = {1,3,4,5,6,9,10,11};
        // 输入要找的值
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入:");
        int val = scanner.nextInt();
        // 开始查找
        int index = halfFind(val,arr);
        // 结果展示
        if (-1 != index) {
            System.out.println("当前值角标为:" + index);
        }else {
            System.out.println("没有找到该值");
        }
    }

    private static int halfFind(int val, int[] arr) {
        int start = 0;
        int end = arr.length - 1;
        while (start <= end) {
            int mid = (start + end) / 2 ;
            // 情况1: 当前值小于中间值说明在这一趟循环的左边
            if (val < arr[mid]) {
                end = mid -1;
            }
            // 情况2: 当前值大于中间值说明在这一趟循环的右边
            else if(val > arr[mid]) {
                start = mid + 1;
            } else {
                //情况3: 找到则返回
                return mid;
            }
        }
        // 找不到返回-1
        return -1;
    }

 

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