java的数组二分查找

java的数组二分查找,第1张

java的数组二分查找

适用场景:数组中存储的值是有序排列存储的

达到目标:传入指定数查找在数组当中的下标:找到返回下标,未找到返回-1

public class Test2 {
    public static void main(String[] args) {
        //二分查找
        int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7, 8, 9};
        //目标元素
        int target = 10;
        //记录开始位置
        int begin = 0;
        //记录结束位置
        int end = arr.length - 1;
        //记录中间的位置
        int mid = (begin + end) / 2;
        //记录目标位置
        int index = -1;

        //循环查找
        while (true) {
            //判断中间的这个元素是不是要查找的元素
            if (arr[mid] == target) {
                //找到了直接返回
                index = mid;
                break;
                //中间这个元素不是要查找的元素
            } else {
                //如果开始在结束位置之后或重合,没有这个元素
                if(begin == end){
                    index =  -1;
                    break;
                }
                //判断中间这个元素是不是比目标元素大
                if (arr[mid] > target) {
                    //中间的这个元素比目标元素大
                    //说明肯定在数组中间的左半部分,因为是大于所以需要修改结束位置-1
                    end = mid - 1;
                } else {
                    //中间的这个元素比目标元素小
                    //说明肯定在数组中间的右半部分,因为是小于所以需要修改起始位置+1
                    begin = mid + 1;
                }
                //取出新的中间位置
                mid = (begin + end) / 2;
            }
        }
        System.out.println("index:" + index);

    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4659218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存