首页 > 其他分享 >二分法查找

二分法查找

时间:2023-03-11 13:12:01浏览次数:55  
标签:return int lastIndex value 二分法 middleIndex 查找 numArr

原理

一个数据有升序的数组,每次取中间元素比较,

如果大于需要查找的元素,则去后面数据,中间数据作为起点最后数据作为终点再定中间数据比较。

如果小于需要查找的数据,则取前面数据,起点不变中间数据作为终点再定中间数据比较。

 

代码

public static void main(String[] args) {

        int[] numArr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
        int value = 10;
        int index = searchIndex(numArr, value);
        log.info("index: " + index);

    }

    /**
     * 查找索引
     *
     * @param numArr
     * @param value
     * @return
     */
    public static int searchIndex(int[] numArr, int value) {
        if (numArr == null || numArr[numArr.length - 1] < value) {
            return -1;
        }
        int firstIndex = 0;
        int middleIndex = numArr.length / 2;
        int lastIndex = numArr.length - 1;
        while (firstIndex < lastIndex) {
            if (numArr[middleIndex] == value) {
                return middleIndex;
            }
            if (numArr[middleIndex] > value) {
                lastIndex = middleIndex;
            } else {
                firstIndex = middleIndex;
            }
            middleIndex = (lastIndex + firstIndex) / 2;
        }
        return -1;

    }

 

标签:return,int,lastIndex,value,二分法,middleIndex,查找,numArr
From: https://www.cnblogs.com/zhougongjin/p/17205709.html

相关文章

  • HJ60 查找组成一个偶数最接近的两个素数
    描述任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。 数据范围:输入的数据满足 4\le......
  • pyautogui.locateOnScreen在屏幕上查找图片并点击
    1.在Win10中任意窗口按下"Win+Shift+S"组合键进入截屏模式,截图并保存为n.png2.代码:#encoding=utf-8importpyautoguifromPILimportImageimporttimetime.slee......
  • C++常用查找算法 find
    功能描述:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end()#include<iostream>#include<vector>#include<functional>#include<algorithm>#include......
  • 【MYSQL】字符串操作函数(拼接、截取、替换、查找位置)
    字符串类型的函数函数用法ASCIl(S)返回字符串S中的第一个字符的ASCII码值CHAR_LENGTH(s)返回字符串s的字符数。作用与CHARACTER_LENGTH(s)相同LENGTH(s)......
  • linux查找出进程号并kill
    使用pgrep 方式一:pgrep-fjava|awk'{print"kill-9"$1}'|sh&sh执行前面print出来的命令“kill-9”方式二:pgrep-fjava|xargskill-9  xargs命令是用来......
  • 二分法
      #include<iostream>usingnamespacestd;constintN=1e5+10;inta[N],st[N];intnum=0;intmain(){intn,q;cin>>n>>q;for(inti=1;i<=n;i++){cin>>a[i];......
  • Microsoft 365 解决方案:巧用“自定义磁贴”快速查找所需资源
    Blog链接:​​​https://blog.51cto.com/u_13637423​​如果企业采用Microsoft365作为企业协同办公平台的话,那么一定喜欢使用应用启动器快速访问OneDrive,Outlook等应用程序,......
  • C/C++库和头文件的查找顺序
    环境说明ubuntu18.04gcc7.5.0必要性不会有人没遇到过collect2.exe:error:ldreturned1exitstatus吧,对于我这样的C++新手,安装第三方库都不知道头文件和库文......
  • 这个二分查找好难(Drying)
    DryingItisveryhardtowashandespeciallytodryclothesinwinter.ButJaneisaverysmartgirl.Sheisnotafraidofthisboringprocess.Janehasdecided......
  • HDU2199 Can you solve this equation? (二分查找)
    Canyousolvethisequation?TimeLimit:2000/1000MS(Java/Others)    MemoryLimit:32768/32768K(Java/Others)TotalSubmission(s):12794    AcceptedS......