二分查询

话不多说 直接上代码(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;
    }
}
复制代码

 

本文作者:AxeBurner

本文链接:https://www.cnblogs.com/bichen-01/p/17072811.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   AxeBurner  阅读(15)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.