java 二分查找查找到数组中指定元素

java 实现二分查找 查找有序数组中的某一元素

话不多说,直接上代码

/**
     * @param arr 传递数组
     * @param key 查找的值
     * @return 返回值的索引
     */
    public static int test(int [] arr,int key){
        int low = 0; //索引开始的位置
        int high = arr.length -1; //数组的长度
        int middle = 0; //查找指定元素的索引位置
        while (low <= high){
            //获得初始数组的中间值
            middle  = (low + high) / 2 ;
            //从中间值开始比较传入的key值 大于则 -1
            if (arr[middle] > key){
                high = middle - 1 ;
            //从中间值开始比较传入的key值 小于则 +1
            }else if (arr[middle] < key){
                low = middle + 1 ;
            }else{
            //当没进if条件时则代表值相等,直接返回即可
                return middle;
            }
        }
        //当查找的值不存在时返回 -1
        return -1 ;
    }

调用方法测试

 int [] arr = {10,20,55,8,17};
        int key = 55;
        int test = test(arr, key);
        if(test == -1){
            System.out.println("查找的是"+key+",序列中没有该数!");
        }else{
            System.out.println("查找的是"+key+",找到位置为:"+test);
        }

打印结果

查找的是55,找到位,置为:2
有问题欢迎评论区讨论!

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值