首页 > 其他分享 >二分查询

二分查询

时间:2023-01-29 15:47:28浏览次数:40  
标签:二分 int 查询 high low searchNum numList

话不多说 直接上代码(Coding):

/**
 * 二分查找
 * 二分查找是一种算法 在一个有序的元素列表中 查询一个元素 如果存在 则返回该元素的索引  没有则返回null
 * 比一般查询速度快 对半查询
 */
public class Demo01 {
    public static void main(String[] args) {
        // 1、定义一个有序的元素列表
        int[] numList = new int[]{1, 3, 5, 7, 9};
        // 2、输入要查询的数字
        int searchNum = 9;
        // 3、查询操作
        Integer index = searchIndex(numList, searchNum);
        if (index == null) {
            System.out.println("您要查询的数字:" + searchNum + " 不存在列表中!");
            return;
        }
        // 4、输出索引
        System.out.println("您要查询的数字:" + searchNum + " 的索引是:" + index);
    }

    /**
     * 二分查询
     *
     * @param numList
     * @param searchNum
     * @return
     */
    private static Integer searchIndex(int[] numList, int searchNum) {
        // a、定义一个最低值
        int low = 0;
        // b、定义一个最高值 列表的长度-1
        int high = numList.length - 1;
        // d、根据要查询的数字 来修改的对应的low或者high  这个查询算法是个循环 直到两个(最低超出最高的索引 才退出循环)
        while (low <= high) {
            // c、获取中间值的索引 向下取整
            int mid = (low + high) / 2;
            // 三种情况:
            if (numList[mid] == searchNum) {
                // 1、如果相等 等于中间值 那直接返回
                return mid;
            } else if (searchNum > numList[mid]) {
                // 2、猜的数字大于中间值 修改low的值 将low移动到中间去
                low = mid + 1;
            } else if (searchNum < numList[mid]) {
                // 3、猜的数字小于中间值 修改high的值 将high移动到中间去
                high = mid - 1;
            }
        }
        return null;
    }
}

 

标签:二分,int,查询,high,low,searchNum,numList
From: https://www.cnblogs.com/bichen-01/p/17072811.html

相关文章

  • LeetCode | 704. 二分查找
    ​题:力扣704.二分查找给定一个 n 个元素有序的(升序)整型数组 nums和一个目标值 target ,写一个函数搜索 nums 中的target,如果目标值存在返回下标,否则返回-1......
  • day65 -查询完
    拆表查询查询父子信息,将一张表拆成两张看待进行查询--查询父子信息:把一张表拆成两张表SELECTa.`categoryname`AS'父栏目',b.`categoryname`AS'子栏目'FROM`......
  • 苹果iPhone 日历查询功能异常
    2022年底苹果发布了IOS16.2版本系统,此时间段内所有升级的用户都将会出现日历查询功能失效,字符错乱等诸多问题。与客服沟通后告知,日历记录内容查询是没有时间限制的,可以无......
  • 7.14 SQL Server子查询
    SQLServer子查询目录SQLServer子查询简介嵌套子查询SQLServer子查询类型SQLServer子查询用于代替表达式SQLServer子查询与IN运算符一起使用SQLServer子查询与ANY运......
  • 7.15 SQL Server UNION联合查询(并集)
    SQLServerUNION(并集)目录SQLServerUNION(并集)简介UNION与UNIONALLUNION(联合)与JOIN(联接)示例UNION与ORDERBY示例简介SQLServer联合查询SQLServerUNION是一......
  • 7.10 SQL Server全外连接查询
    SQLServerFullOuterJoin目录SQLServerFullOuterJoinSQLServer全外连接简介全连接示例SQLServer全外连接简介全外连接也称全连接,效果很像左连接和右连接的结合......
  • 7.8 SQL Server内连接查询
    SQLServerInnerJoin目录SQLServerInnerJoinSQLServer内连接介绍SQLServer内连接(INNERJOIN)语法更多的SQLServer内连接示例SQLServer内连接介绍内连接是SQL......
  • 7.7 SQL Server连接查询
    SQLServer连接查询目录SQLServer连接查询简介创建示例表SQLServer内连接SQLServer左联接SQLServer右连接SQLServer全联接简介在关系数据库中,数据分布在多个逻辑......
  • MyBatis完成代理方式查询数据以及核心文件配置
    MyBatis目标能够完成Mybatis代理方式查询数据能够理解Mybatis核心配置文件的配置一、Mybatis1.1Mybatis概述1.1.1Mybatis概念MyBatis是一款优秀的持久层框架,用于简化JDB......
  • 可以实现一键批量查询快递单号吗
    随着互联网的高速发展,网络购物也成为了一件家常便饭的事情。无论是购买生活必需品,还是高档耐用品,大家都会习惯在网上查找一番。那么电商行业也逐渐成为了一个热门行业,相信许......