zoukankan      html  css  js  c++  java
  • 算法 之 二分查找算法

    二分查找算法是比较简单的算法,在查找有序数组中的数据就有巨大的优势。接下来就具体谈谈二分法:

    要查找的值为searchKey

    1.这个方法一开始就设置了变量lowerBound和upperBound,分别指向数组的第一项和最后一个非空项,这样确定了查找范围。

    2.然后在while循环中,声明一个下标curin,被设置为上面范围的中间值(curin = (lowerBound+upperBound)/2)(ps:得到的curin不会四舍五入,而是会舍弃余数);

    3.如果当前curin所指向的值等于searchKey,这就查找成功了

     如果当前curin所指向的值小于searchKey,则将curin+1赋值给lowerBound,而upperBound不变,再求当前范围的中间值curin

     如果当前curin所指向的值大于searchKey,则将curin-1赋值给upperBound,而lowerBound不变,再求当前范围的中间值curin

     如果当前lowerBound大于当前的upperBound,则证明查找失败

    实现代码如下:

        public int find(long searchKey){
            int curIn;              //中间值下标
            int lowerBound=0;
            int upperBound=nElem-1;
            while(true){
                curIn = (lowerBound+upperBound)/2;
                if (a[curIn]==searchKey) {
                    return true;  //查找成功
                }else if (lowerBound>upperBound) {
                    return false;   //查找失败
                }else {
                    if (a[curIn]<searchKey) {
                        lowerBound = curIn+1;
                    }else {
                        upperBound = curIn-1;
                    }
                }
            }
        }
  • 相关阅读:
    SAS学习 day10
    SAS学习 day9
    SAS学习 day8
    Python解释器 发展史
    os. 模块
    字典
    类型1
    计算机编码
    EDA 会议整理
    2020-8-27
  • 原文地址:https://www.cnblogs.com/mercuryli/p/4987999.html
Copyright © 2011-2022 走看看