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

JAVA 整数的二分查找

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

JAVA 整数的二分查找

话不多说,咱直接上代码,代码里有相应的解释

代码如下:


public class BinarySearch {
    public static void main(String[] args) {
        int[] arr ={1,3,4,5,7,8};
        int x  = 8;
        int l = 0;
        int r =arr.length-1;
        while(l < r) {
            //先写第一种情况并做判断,注意(l + r >> 1)这个表达式,这样写是对应于这第一种情况而言的
            //第一种情况就是arr[mid] >= x(这是我们预先进行判断得到的),如果不行,直接把这俩种情况都写一遍,再看
            //或者对数组进行升序排序,然后再进行判断用哪个性质/情况
            //也就是说,我们每次都看一下核心区间--->(r = mid 还是 l = mid )因为可能会存在mid 对应的数可能也是我们要找的呢个数
            //r = mid 不需要多加呢个1 ,即就是第一种情况
            //补上加 1 ,目的也就是为了防止死循环
            int mid = l + r >> 1;
            if (arr[mid] >= x) {
                r = mid;// 就是根据这个来判断是否加 1
            } else {
                l = mid + 1;
            }
        }
        //这里为什么先进行判断呢,就是判断是否存在这个数
            if (arr[l] != x) {
                System.out.println("无解");
            } else {
                System.out.println(l);
                while (l < r) {
                   int  mid = l + r + 1 >> 1;
                    if (arr[mid] <= x) {
                        l = mid;
                    } else {
                        r = mid - 1;
                    }
                }
                    System.out.println(l);
            }

        }
    }

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

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

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