首页 > 其他分享 >二分查找总结

二分查找总结

时间:2023-11-04 19:55:45浏览次数:37  
标签:二分 总结 right target int mid 查找 left

不考虑重复元素下

循环条件l<=r
mid=(left+right)>>1
(1)如果a[mid]=target return mid
(2)如果a[mid]<target 搜索 [mid+1,right]
(3)如果a[mid]>target 搜索 [left,mid-1]
如果循环推出仍然没有找到,就标志着没有该元素。

二分查找元素起始位置

mid=(left+right)>>1
需要找到一个位置,该位置左边都小于target,右边都大于等于target
循环条件left!=right
(1) a[mid]<target 查找[mid+1,right]
(2) a[mid]>=target 查找[left,mid]
退出循环的时候,判断一下a[left]是否等于target,等于则返回left,否则证明不存在该元素。


int bs1(){
    int l=1;
    int r=n;
    while(l<r){
        int mid=(l+r)>>1;
        if(a[mid]<k)
            l=mid+1;
        else r=mid;
    }
    return a[l]==k?l:-1;
}

二分查找元素结束位置

mid=(left+right+1)>>1
循环条件left<right
(1) a[mid]<=target 查找[mid,right]
(2) a[mid]>target 查找[left,mid-1]
退出循环的时候,判断一下a[left]是否等于target,等于则返回left,否则证明不存在该元素
为什么这种情况下要+1呢,是为了向上取整,事实上,在left+1==right下,如果不向上取整,就会陷入死循环里


int bs2(){
    int l=1;
    int r=n;
    while(l<r){
        int mid=(l+r+1)>>1;
        if(a[mid]>k)
            r=mid-1;
        else l=mid;
    }
    return a[l]==k?l:-1;
}

标签:二分,总结,right,target,int,mid,查找,left
From: https://www.cnblogs.com/For-Miku/p/17809720.html

相关文章

  • # 学期2023-2024-1 20231401 《计算机基础与程序设计》第六周学习总结
    学期2023-2024-120231401《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第六周作业这个作业的目标自学教材:计算机科学概论第7章并完成云班课测试《......
  • 20211316郭佳昊 《信息安全系统设计与实现(上)》 第九周学习总结
    一、任务要求[1]知识点归纳以及自己最有收获的内容,选择至少2个知识点利用chatgpt等工具进行苏格拉底挑战,并提交过程截图,提示过程参考下面内容(4分)我在学****知识点,请你以苏格拉底的方式对我进行提问,一次一个问题核心是要求GPT:请你以苏格拉底的方式对我进行提问然后GPT就会......
  • 对于扩展欧几里得算法的小总结
    对于不定方程\(ax+by=c\)有正数解的充分必要条件是\(c|gcd(a,b)\),证明请看裴蜀定理那么显然的,我们只要能解出方程\(ax+by=gcd(a,b)\)然后把解\(\times\frac{c}{gcd(a,b)}\)即可如何解这个新的方程呢?我们知道\(gcd(a,b)\),并且它等于\(gcd(b,a%b)\),也就是说,方程\(bx+(a%b)y=gcd......
  • 2023-2024-1 20231416 《计算机基础与程序设计》第六周学习总结
    作业信息这个作业属于哪个课程(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP)这个作业要求在哪里(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/12754)这个作业的目标《计算机科学概论》第7章《C语言程序设计》第5章作业正文http......
  • 用二分法寻找第7位数(数组)
    #include<stdio.h>intmain(){  intk=7;  intarr[]={1,2,3,4,5,6,7,8,9,10};  intsz=sizeof(arr)/sizeof(arr[0]);    //元素个数的计算公式  intleft=0;                //左下标  intright=sz-1;  ......
  • 2023-2024-1 20231410刘珈岐 《计算机基础与程序设计》第六周学习总结
    2023-2024-120231410刘珈岐《计算机基础与程序设计》第六周学习总结作业信息这个作业属于哪个课程(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP)这个作业要求在哪里(https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/12754)这个作业......
  • 存储云服务中OBS(对象存储服务)的一些总结
    一、OBS1.概念一个以及对象的海量存储服务,桶(类似于文件夹)里面装着对象(文件)。桶是OBS中存储对象的容器,对象是OBS中数据存储的基本单位一个对象实际上是文件数据与其相关属性信息的集合体(不只是一个data),可以类似于Java中的类。OBS用户可以上传下载OBS系统里的任意资源我自己......
  • 总结后续
    编程小结套接字中的服务器与客户端交互模式是网络通信中一种典型且高效保密的通信方式,广泛应用于目前信息化时代的网络通信。本篇记录了模拟套接字编程中出现的问题,以供参考。若出现客户端可以自由给服务器发送信息并被接收,但服务器无法成功发送信息给客户端,这是由于服务器无法......
  • Git 精简快速使用以及官方文档进阶总结
    ​ 安装Git忽略,自行搜索 新建项目,或者在仓库拉取项目,进入到项目目录Github给出的引导,新项目和旧项目echo"#testgit">>README.mdgitinitgitaddREADME.mdgitcommit-m"firstcommit"gitbranch-Mmaingitremoteaddoriginhttps://github.com/9sis/tes......
  • 每日总结25
    软件设计                 石家庄铁道大学信息学院 实验6:原型模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解原型模式的动机,掌握该模式的结构;2、能够利用原型模式解决实际问题。 [实验任务一]:向量的原型用C++完成数学中向量的封......