栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java的数组二分查找

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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);

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/332432.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号