算法基础——二分检索
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)   

相关内容

热门资讯

“双标”换卡背后,银行还需多些... 新华社记者 颜之宏、杨深深 持到期银行卡和身份证去银行网点换新卡,却被要求“必须交回旧卡才能取新卡”...
“离境退税2.0”带动“中国购... 【环球时报综合报道】编者的话:5月18日,商务部等6部门联合发布《关于加力优化离境退税措施扩大入境消...
一年烧掉2000亿、市值蒸发3... 商业润点 |Biz Run Review 三国归晋,用了六十年。即时零售的"三国杀",才刚刚开局...
原创 金... 2026年5月22日,国内黄金市场呈现出令人咋舌的价格鸿沟。基础金价徘徊在每克995.3元,而回收价...
原创 人... SpaceX的星舰V3终于在全球瞩目中成功升空。北京时间5月23日清晨,这颗高达124米的巨型火箭顺...
原创 被... 5月19日,欧洲议会掀起了一场引人注目的风暴,以压倒性的票数通过了最新的钢铁进口规定。 这套规则...
光纤量价齐升,烽火通信加快布局... 烽火通信(600498)5月22日披露的投资者关系活动记录表显示,公司于5月21日参加了中国信息通信...
原创 突... 今天5月24日一大早,打开行情一看,国际现货黄金报4508.25美元/盎司,单日跌了26.68美元,...
企业快讯 | 携手联通!狄耐克... 狄耐克 厦门总商会副会长企业 厦门狄耐克智能科技股份有限公司 与中国联通厦门分公司 将5G智慧“嵌入...
美银策略师警告:SpaceX与... 环球网 据彭博社报道,美国银行首席投资策略师迈克尔·哈特奈特(Michael Hartnett)最新...
卸任55天后,知名基金经理任相... 【导读】卸任55天后,知名基金经理任相栋“奔私”谜底揭晓 见习记者 闫军 知名基金经理任相栋“奔私”...
原创 大... “免签+手机刷一切”就能让老外连夜订机票?2026年一季度,阿根廷人来华暴涨九倍,北京三源里菜市场三...
从泰山顶峰掉落!“大佬背后的大... 文/刘工昌 他曾是柳传志的“大哥”,助力联想完成混合所有制改革;是史玉柱眼中的“贵人”,帮他东山再起...
原创 2... 最近网上流传出一份2030年GDP10强预测榜单,其中一些城市位次的变化也挺有趣的。上海排在第一,深...
原创 全... 2026年3月的全球美债市场迎来剧烈变动,彻底打破了长期稳定的持仓格局。 根据美国财政部发布的国际资...
全球都在给这几只“疯牛”烧钱 近段时间,AI行情再次成为全球资本市场主线,但舞台中央的“主角”发生了变化:投资者不再只偏好云厂商和...
【财闻联播】“硬刚监管”?老虎... ★ 宏观动态 ★ 商务部:1—4月全国吸收外资2876.9亿元人民币 据商务部网站,2026年1—4...
燕京啤酒营收净利双增:U8增速... 蓝鲸新闻5月22日讯(记者 朱欣悦)燕京啤酒(000729.SZ)打了一个翻身仗。 2025年燕京啤...
原创 帮... 老铁们,这周有个事儿挺有意思,估计不少基民都看懵了:都说科技是主线,芯片是未来,可数据显示,年内火爆...
4家银行AIC现身存储巨头股东... 近日,资本市场热度颇高的两家存储巨头长鑫科技集团股份有限公司(以下简称“长鑫科技”)、长江存储控股股...