二分查找逻辑

news2024/11/15 19:40:51

目录

二分查找

查找逻辑

题目练习

题目描述

代码示例

总结


二分查找

二分查找是我们经常使用的一种算法,他的逻辑是

升序或者降序无重复元素的数组中,比较目标值和数组中间值的方法,每次缩小一半的搜索范围,相比遍历可以加快计算的速度

查找逻辑

假设:目标值为下标为4的数值,给定一个大小为10的数组,我们给定他的下界left=0,上界right=numsLen-1,中间下标mid=(left+right)/2

判断目标值target是否等于num[mid];

  • 如果相等则返回mid

如果不相等则判断target与num[mid]的大小关系;

  • target>num[mid];则说明目标值在后半部分,因为mid与目标值不相等,那么left就变成mid+1;
  • target<num[mid];则说明目标值在前半部分,因为mid与目标值不相等,那么right就变成mid-1;

每次缩小范围后都需要继续执行上述步骤,我们可以使用一个while循环,当left<right的时候循环,直到找到目标值对应的下标,返回下标;或者没有目标值对应的下标,返回-1;

题目练习

我们找到一个题目来练习一下

题目描述

牛客网的题目链接: 二分查找-I_牛客题霸_牛客网 (nowcoder.com)

代码示例

根据二分查找的逻辑,我们可以写下代码: 

int search(int* nums, int numsLen, int target ) {
    if(nums==NULL){
        return -1;
    }
    int left=0;
    int right=numsLen-1;
    int mid=(left+right)/2;
    while (left<=right) {
        if (nums[mid]>target) {
            right=mid-1;
        }
        else if (nums[mid]<target) {
            left=mid+1;
        }
        else
        return mid;
        mid=(left+right)/2;
    }
    return -1;
}

总结

二分查找是我们必须掌握的一种算法,继续加油吧!

多多重复,百炼成钢!

小杜陪各位一起成长!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/930292.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity Alembic闪烁问题

最近在做项目时&#xff0c;发现Clo3D导出的服装abc动画&#xff0c;导入到Unity中后(已提前导入Alembic插件)&#xff0c;运行时屏幕会闪烁(变黑)。 经过几轮测试&#xff0c;发现是切线的问题。解决办法很简单。将abc文件上的Tangents属性值改为None即可。

一篇关于CPU的硬核知识分享

不管你玩硬件还是做软件&#xff0c;你的世界都少不了计算机最核心的 —— CPU。 01CPU是什么&#xff1f; CPU与计算机的关系就相当于大脑和人的关系&#xff0c;它是一种小型的计算机芯片&#xff0c;通常嵌入在电脑的主板上。 CPU的构建是通过在单个计算机芯片上放置数十亿…

app.js和页面.js 实现全局传参

实现全局传参的几个步骤&#xff1a;1. 在页面.js文件中 输入 const appgetApp() 2.便可以在页面中引用app.js中的globalData中的数据。 注意点&#xff1a;app.js中是使用的是this.globalData (调用自身的数据&#xff09; 页面.js中使用的是app.globalData&#xff08;引用ap…

Web 应用框架 Express 构建 RESTful API

Express框架 Express 是 Node.js 平台上最常用的 Web 应用框架之一&#xff0c;它简洁、灵活且易于使用。Express 提供了一组强大的功能和工具&#xff0c;可以帮助开发者快速构建 Web 应用程序和 RESTful API。 以下是 Express 框架的一些主要特点和功能&#xff1a; 轻量级…

c++11 标准模板(STL)(std::basic_istringstream)(五)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT> > class basic_istringstream;(C11 前)template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allo…

国家管网:围绕招标全链路,聚焦提升招标管理数智化水平

“要深化供应链管理系统应用&#xff0c;推动全面应用电子招标平台开展工程建设项目招标&#xff0c;实现招标工作过程透明、效率提升和监管有力。” ——国家管网董事长 张伟 作为能源领域新的“国家队”&#xff0c;国家管网立足新变局应对新挑战&#xff0c;着力提升产业链…

vite按需引入elementPlus ,并自定义主题色

1. 首选无论是按需引入还是全引入都需要先安装elementPlus npm i element-plus 2. 按需引入elementPlus&#xff0c;可参照官网 a. 安装unplugin-vue-components 和 unplugin-auto-import npm install -D unplugin-vue-components unplugin-auto-import b. 配置vite.config.…

VScode使用SSH连接linux

1、官网下载和安装软件 https://code.visualstudio.com/Download 2、安装插件 单击左侧扩展选项&#xff0c;搜索插件安装 总共需要安装的插件如下所示 3、配置连接服务器的账号 安装完后会在左侧生成了远程连接的图标&#xff0c;单击此图标&#xff0c;然后选择设置图标…

PHP自己的框架验证码Captcha使用(完善篇八)

1、实现效果生成验证验证码 2、验证码类CaptchaBase.php <?php class CaptchaBase {private $width;private $height;private $length;public function __construct($width, $height, $length){$this->width $width;$this->height $height;$this->length $le…

基于Java+SpringBoot+Vue前后端分离社区智慧养老监护管理平台设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

亚洲辛辣菜肴搭档什么葡萄酒最好?

我们都有那种甜美、活泼、超级容易相处的朋友&#xff0c;他们是你想在一起度过美好时光的人。在葡萄酒的世界里&#xff0c;莫斯卡托就是这样的朋友。莫斯卡托是一个甜味品种&#xff0c;在过去的几年里葡萄酒在世界范围内越来越受欢迎。由于酒精含量低&#xff0c;轻微起泡&a…

202325读书笔记|《花间集评注》——金盏不辞须满酌,海棠花下思朦胧,醉香风。满身香雾簇朝霞。世间屏障,彩笔画娇娆。

202325读书笔记|《花间集评注》——金盏不辞须满酌&#xff0c;海棠花下思朦胧&#xff0c;醉香风。满身香雾簇朝霞。世间屏障&#xff0c;彩笔画娇娆。 花间集评注卷一花间集评注卷二花间集评注卷三花间集评注卷四花间集评注卷五花间集评注卷六花间集评注卷七花间集评注卷八花…

Linux系统USB摄像头测试程序(四)_视频旋转及缩放

下面的程序实现了视频的旋转及缩放&#xff0c;窗口中点击鼠标左键视频向左旋转&#xff0c;点击鼠标右键视频向右旋转并且视频缩小了二分之一。程序中首先把yvyv422转换成了RGB24&#xff0c;然后利用opencv进行了旋转和缩放&#xff0c;其后用sdl2进行了渲染。使用了ffmpeg、…

定制效果在线定制印刷系统源码 DIY在线定制系统源码 云印刷定制系统源码手机、PC端实时互通

支持各类产品的在线定制&#xff0c;无论是水杯雨伞U盘还是T恤衬衫四件套&#xff0c;均可轻松进行定制 独创制作间概念&#xff0c;同一套模板可以重复对应不同制作间 手机、PC端实时互通&#xff0c;客户可通过任意途径进行图片上传、编辑&#xff0c;一方修改另一方即时可见…

Linux操作系统--linux环境搭建(1)

在上一节课中,我们对Linux有了一个初步的认识,想要进一步的学习Linux,我们需要先把Linux需要的环境搭建出来。下面我们一起来看一下如何搭建Linux环境。 1.CentOS下载 官方下载地址: The CentOS Project 下载步骤如下所示: 选择内容 选择镜像 2.Vmware下载安装 一台电脑本…

【Kubernetes】Kubernetes 集群的组件介绍

基本概念控制平面组件&#xff08;Control Plane Components&#xff09;kube-apiserveretcdkube-schedulerkube-controller-managercloud-controller-manager&#xff08;可选&#xff09;kube-apiserver的重要性 ❗ Node 组件kubeletkube-proxy容器运行时&#xff08;Contain…

糟改押ong韵诗词,末三字改qiao ben zhong

题目给出诗词行的汉语拼音&#xff0c;糟改诗词押ong诗词行末三字“敲笨钟“。 (本笔记适合初通 Python 的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff…

Spark大数据分析与实战笔记(第一章 Scala语言基础-2)

文章目录 章节概要1.2 Scala的基础语法1.2.1 声明值和变量1.2.2 数据类型1.2.3 算术和操作符重载1.2.4 控制结构语句1.2.5 方法和函数 章节概要 Spark是专为大规模数据处理而设计的快速通用的计算引擎&#xff0c;它是由Scala语言开发实现的&#xff0c;关于大数据技术&#xf…

基于Java+SpringBoot+Vue前后端分离相亲网站系统设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

基于Java+SpringBoot+Vue前后端分离智能无人仓库管理设计和实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…