算法基础——二分检索
admin
2024-04-03 19:23:26
0

二分检索来查找一个数据是很快速的一种方法是一种很优秀的算法。

我们现在有一个有序的数组我们需要查找它里面的一个元素。这时候我们应该怎么办呢,我们可以从这个数组的中间位置去查找。如果要寻找的数字比数组中间的数字大那么我们在这个数组的后半部分去查找,如果要寻找的数字比数组中间的数组小那么我们应该在这个数组的前半部分去查找。通过这样的方法我们可以比较快速地查找到这个元素。

先看Pseudocode语言所书写的伪代码

procedure BINSRCH(A,n,x,j)

//给定一个按非降次序排列的元素数组A(1:n),n≥1,判断x是否出现。若是,则置j,使得x=A(j),若非,j=0//

  integer low,high,mid,j,n;

  low<-1;high<-n

  while low≤high do

       mid<-⌊(low+high)/2⌋

case

    :x

    :x>A(mid):low<-mid+1

    :else:j<-mid;return j

end case

   repeat

j<-0;return j

end BINSRCH

我们在这里可以看到主要是通过low和high还有mid来控制查询的,low和high是随着程序的运行而逐步发生改变的。程序是有出口的当我们发现low不是≤high的时候我们就可以退出了说明找不到。

这是我个人所书写的代码

#include
#include
int w[7] = {0, 5, 10, 12, 13, 15, 18};//数组元素
int low;int high;int mid; int n; 
void pd(int n,int low,int high){
    if(low<=high){
      mid=(low+high)/2;
      if(n>w[mid-1]){
          low=mid+1; pd(n,low,high);//low发生改变在重新调用该函数
      }
      if(n
          high=mid-1; pd(n,low,high);//high发生改变再重新调用该函数
      }    
      if(n==w[mid-1]){
          printf("查找成功\n");
          printf("是数组中第%d个数字",mid);
          exit(0); 
      }
    }
    else//查找失败了需要跳出去
    printf("查找失败\n");

int main()
{
    printf("输入你想要查找的数字\n"); 
    scanf("%d",&n);
    pd(n,1,7);
    return 0;

这个算法是很简单的是很容易理解的,但是局限性是很明显的它必须要求是有序的数组这个限制就很大了

时间复杂度:                        

成功:最好 O(1)                                   

平均      O(logn)                                 

最坏      O(logn)                      

不成功: O(logn)   

相关内容

热门资讯

亚朵节后价格“跳水”超70% 春节过后,部分热门小城的亚朵酒店房价上演“过山车”行情,房价节前飙升,节后迅速跳水,巨大的价格波动引...
原创 金... 你绝对想不到,同样一克999足金,在深圳水贝批发市场只要1334元,走进周大福门店却变成1545元,...
德兰明海冲击港交所!递表前大手... 又一家储能企业“叩响”了港交所大门。近期,港交所官网显示,中小型用户侧储能企业深圳市德兰明海新能源股...
绿茶集团、猫眼娱乐发布正面盈利... |2026年2月25日 星期三| NO.1绿茶集团发布正面盈利预告 2月24日港股收市后,绿茶集团(...
安宁市的历史文化及名人有哪些 安宁市,这座坐落在彩云之南的城市,宛如一颗璀璨明珠,散发着迷人的历史文化魅力。在这里,岁月留下了深深...
中国央行连续12个月加量续作M... 来源:中国新闻网 中新社北京2月24日电 (陶思阅)中国央行24日发布中期借贷便利(MLF)招标公告...
不是15%?特朗普10%全球关... 据美国海关及边境保卫局(CBP)发布消息,特朗普政府将实施的新全球关税为10%。 第一财经收到的CB...
2026年春节出游人次、消费金... 2026年春节,为期9天的超长假期点燃了全国消费热情,多项核心数据创下历史纪录。 经文化和旅游部数据...
美国联邦存款保险公司(FDIC... 美国联邦存款保险公司(FDIC):美国银行业存款季环比下滑2%。
2026春节AI大战深度复盘:... 主编温静导读:2026年春节,元宝、千问、豆包三大巨头以红包、免单为杠杆,发动了一场规模空前的用户争...
期市节后首日金属板块普涨 白银... 本报记者 王宁 2月24日,春节后的首个交易日,国内期货市场呈现涨多跌少态势。 从板块表现来看,农产...
月跌超10%背后:软件行业,将... 此前一天,2月23日,人工智能公司Anthropic宣布,其Claude Code工具可用于在IBM...
公告精选 |《飞驰人生3》票房... 控制权收购 东阳光(600673.SH):公司正在筹划通过发行股份的方式收购宜昌东数一号投资有限责任...
东阳光:筹划收购东数一号控制权... 上证报中国证券网讯(记者 骆民)东阳光公告,公司正在筹划通过发行股份的方式收购宜昌东数一号投资有限责...
原创 高... 你有没有发现,几年前人人都在拼命买房,而现在,越来越多人开始思考,房子,到底还是不是财富? 这几年,...
这个春节,中国经济热力值拉满 2026年的春节,注定要在中国消费市场上留下浓墨重彩的一笔。 当9天的超长假期遇上持续加码的政策红利...
2026年中国汽车产业十大趋势... 2025年,中国汽车产业在连续17年产销量稳居全球第一的基础上,再次交出了一份充满变革与挑战的答卷。...
2022年天猫烘焙厨电行业趋势... 今天分享的是:2022年天猫烘焙厨电行业趋势白皮书 报告共计:7页 烘焙厨电迎来新变革:从“功能单一...