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
有问题欢迎评论区讨论!


版权声明:本文为zgc55987原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。