当前位置: 首页 > article >正文

算法之二分查找法

需求描述:

        在有序数组A内,查找值target

        如果找到返回索引

        如果找不到返回-1

算法实现描述

        前提条件:给定一个含有n个元素的有序数组A,满足A0≤A1≤A2≤···An-1,一个待查值target

        实现步骤:        1、创建i = 0, j = n - 1;

                                   2、如果i > j,结果查找,没找到

                                   3、设置m = floor((i+j) / 2),m为中间索引,floor是向下取整(≤(i + j) / 2的最小整数)

                                   4、如果target < Am 设置 j = m - 1,跳到第二步

                                   5、如果Am < target 设置 i = m + 1, 跳到第二步

                                   6、如果Am = target,结束查找,找到了

代码实现

    /***
         * 二分查找法实现
         * @param args 数据
         * @param target 查找目标
         * @return 找到返回索引
         *         找不到返回-1
     */
    public static int binarySearchBasic(int[] args, int target) {
        int i = 0, j = args.length - 1;//设置指针和初始值
        while (i <= j) {//范围内有东西
            int m = (i + j) / 2;
            if (target < args[m]) {//目标在左边
                j = m-1;
            } else if (args[m] < target){//目标在右边
                i = m + 1;
            } else {
                return m;//找到数据的id
            }
        }
        return -1;
    }


http://www.kler.cn/news/356708.html

相关文章:

  • IP地理位置定位系统之应用场景划分
  • 大厂面试真题-说一说rpc和http的区别?http能否代替kafka
  • ui自动化知识点-web端
  • 无向图中的一些问题与处理(上接无向图知识简记)
  • GitLab 老旧版本如何升级?
  • 玩转大模型(二)启动一个大模型
  • 怎样将pdf转换成ppt?关于几种PDF转PPT的方法介绍
  • web端使用高德地图逆地理编码
  • GOT-OCR-2-GUI - 一个强大的AI文本识别模型 OCR文字识别 图片文字识别 本地一键整合包下载
  • 【ROS2实操五】通信机制补充
  • 2024年诺贝尔物理学奖揭晓:AI背后的“造梦者”是谁?
  • Thread的基本用法
  • MySQL 中utfmb3和utfmb4字符集区别
  • 算法——python实现归并排序
  • 中小型企业网络的设计与实现
  • 基于语音识别的停车共享小程序(lw+演示+源码+运行)
  • 桂林旅游助手:一个SpringBoot开发的平台
  • 【JavaEE】——四次挥手,TCP状态转换,滑动窗口,流量控制
  • URP学习四
  • 关于串口中断时的一些问题