二分查询 有注释也有查询查询过程 想学习的可以看看

{
    public static void main(String[] args) {
        // 二分查询原理: 首先定义一个中间值的索引 再定义一个数组最左边值的索引 再定义最右边值的索引
                     // 从中间开始查如果比中间值大 那么就把中间值+1的索引赋值给最左边的值的索引
                     // 从中间开始查如果比中间值小 那么就把中间值-1的索引赋值给最右边的值的索引
        // 演示过程: {1,2,3,4,5,6,7,8,9} 假设查找的值为  3  最左边值的索引为:0 值为:1  最右边值的索引为: 8  值为:9
        //   第一次查找 {1,2,3,4,5,}  因为比中间值小 那么就是 索引 4 - 1 下一轮就是 0-->4进行查找 以此类推 就能查找到
        // 定义一个数组
        int [] arr = {1,2,3,4,5,6,7,8,9};
        // 索引
        int index = -1;
        int value;
        // 最左边值的索引
        int left = 0;
        // 最右边值的索引
        int right = arr.length-1;
        // 中间值的索引
        int middle = (left + right) / 2;
        // 循环查询 直到 最左边的值 大于 right 才打破循环
        Scanner input = new Scanner(System.in);
        System.out.println("输入需要查找的值:");
        value = input.nextInt();
        while (left <= right){
            // 判断中间值是for等与需要查找的值
            if (arr[middle] == value){
                // 如果是直接把 中间值的索引 赋值
                index = middle;
                // 查到到了直接跳出循环
                break;
                // 如果中间值小与 需要查找的值
            }else if (arr[middle] < value){
                // 那么就就把中间值赋值的索引+1 给最左边值的索引
                left = middle + 1;
                // 反之 把最中间的值的索引-1 赋值给最右边值的索引
            }else {
                right = middle - 1;
            }
            // 每一次循环中间值都在变 需要把中间值的公式 每次都循环运行一次 产生不同的中间值
            middle = (left + right) / 2;
            // 最后一种可能 中间值不存再
        }if (index == -1){
            System.out.println("查找的值索引不存在");
            // 存在则大于值所对的索引的位置
        }else {
            System.out.println(value+"的索引是:"+index);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值