C语言-用二分法在一个有序数组中查找某个数字

1.题目描述

有15个数按由大到小顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”

二.思路分析

  1. 记录数组中左边第一个元素的下标为left,记录数组右边第一个元素的下标为right,记录中间元素的下标为mid(mid = left+right)
  2. 当输入的数在a[mid]的左边时,将right改成mid-1,同时mid = (left+right)/2;当输入的数在a[mid]的右边时,将left改成mid+1,同时mid = (left+right)/2;
  3. 执行上面第2步,直到left>right时退出循环,退出也就意味着该数没在数组中
    举个例子:
    在这里插入图片描述

三.代码实现

#include <stdio.h>
int main()
{int a[15] = { 101,99,94,89,84,80,79,77,74,73,70,23,13,9,1 };int n = 0;scanf("%d", &n);int right = 14;int left = 0;int mid = (right + left) / 2;while (left <= right){if (n < a[mid]){left = mid + 1;mid = (left + right) / 2;}else if (n > a[mid]){right = mid - 1;mid = (left + right) / 2;}else{printf("该数为该数组中第%d个元素\n", mid + 1);return 0;}}if (left > right){printf("无此数\n");}return 0;
}

代码修改自该博主->https://blog.csdn.net/yahid/article/details/123389973

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

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

相关文章

Spring AI聊天功能开发

一、引入依赖 继承父版本的springboot依赖&#xff0c;最好是比较新的依赖。 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.2.4</version><relativePat…

【JavaScript】转化为布尔值boolean的几种情况

1 转化为布尔值boolean时为false的6种情况 下面6种值转化为布尔值时为false&#xff0c;其他转化都为true&#xff1a; 1、undefined2、null&#xff08;代表空值&#xff09;3、0&#xff08;数字0布尔值为false&#xff0c;字符串"0"布尔值为true) (数字0转布尔类…

C++笔试强训day10

目录 1.最长回文字符串 2.买卖股票的最好时机(一) 3.过河卒 1.最长回文字符串 链接 一开始没认真看题目&#xff0c;直到提交了好几遍没过还是没去检查题目&#xff0c;一直检查代码逻辑&#xff0c;哎呦&#xff0c;难受了。 我以为是收尾字母相同就行了。 错误代码&…

为什么二维数组初始化第一维数组长度可以为空,第二维不可以为空呢?

注意&#xff0c;数组第二维的长度声明永远不能省略。这是因为C语言中的二维数组元素在c编译程序为其分配的连续存储空间中是按行存放的&#xff0c;即存在完整第一行后存第二行&#xff0c;然后再第三行&#xff0c;以此类推。存放时系统必须知道每一行有多少个元素才能正确计…

一文讲解Android车载系统camera架构 - EVS

Android的camera开发中&#xff0c;使用最多的是camera2 以及现在Google主推的cameraX 架构&#xff0c;而这两个架构主要针对的是手机移动端上camera的流程。 而今天介绍的EVS(Exterior View System)架构是不同于camera2上的手机架构&#xff0c;针对Automotive的版本&#x…

软文伪原创工具有哪些,推荐3款强大的软文伪原创工具

软文作为一种重要的营销和传播手段&#xff0c;受到了越来越多的关注。而随着科技的不断发展&#xff0c;各种软文生产的工具相续出现&#xff0c;如&#xff1a;软文伪原创工具&#xff0c;它能为人们提供便捷、高效的文章生产方式&#xff0c;也及可以节省文章写作的时间与精…

牛客Linux高并发服务器开发学习第五天

文件I/O 站在文件和内存的角度&#xff0c;输入输出的定义不同。 我们应该站在内存的角度去看文件的输入输出。 标准C库IO函数 与Linux系统的IO函数是对应关系。 先写到缓冲区&#xff0c;缓冲区满了&#xff0c;写到磁盘里&#xff0c;提高执行效率。 虚拟地址空间 解…

车载系统的 加减串器应用示意

overview 车载系统上使用加减串器来实现camera&#xff0c; led液晶显示屏等 图像数据的远距离传输&#xff0c;将原先在短距离传输视频信号的mipi csi&#xff0c;dsi 等的TX&#xff0c;RX中间&#xff0c;插入加减串器&#xff0c;实现长距离的可靠传输。 示意图如下 往往…

uni-app如何监测获取页面视图出现

在 uni-app 中&#xff0c;监测页面视图的出现或渲染完成&#xff0c;可以使用生命周期函数和一些自定义方法。这里有一些常见的方法&#xff1a; 使用生命周期函数&#xff1a; uni-app 提供了与页面生命周期相关的函数&#xff0c;如 onLoad、onShow、onReady 等。 onLoad…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model&#xff1a;负责数据存储 View&#xff1a;负责页面展示 View Model&#xff1a;负责业务逻辑处理&#xff08;比如Ajax请求等&#xff09;&#xff0c;对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率&#xff1a;…

图像处理:乘法滤波器(Multiplying Filter)和逆FFT位移

一、乘法滤波器&#xff08;Multiplying Filter&#xff09; 乘法滤波器是一种以像素值为权重的滤波器&#xff0c;它通过将滤波器的权重与图像的像素值相乘&#xff0c;来获得滤波后的像素值。具体地&#xff0c;假设乘法滤波器的权重为h(i,j)&#xff0c;图像的像素值为f(m,…

Cranck-Nicolson隐式方法解线性双曲型方程

Cranck-Nicolson隐式方法解线性双曲型方程 Cranck-Nicolson方法在抛物型方程里面比较常用&#xff0c;双曲型方程例子不多&#xff0c;该方法是二阶精度&#xff0c;无条件稳定&#xff0c;然而&#xff0c;数值震荡比较明显&#xff0c;特别是时间演化比较大以及courant数比较…

网工内推 | 云计算运维,厂商云相关认证优先,股票期权,全勤奖

01 国科科技 招聘岗位&#xff1a;云计算运维 职责描述&#xff1a; 1、负责私有云平台的运维管理工作,包括云平台日常运维、故障处理、扩容、版本升级、优化和维护等。 2、根据业务需求,从技术角度支持及配合各业务系统上云工作。 3、为云上业务系统提供云产品、云服务方面的…

forEach和map中的break和continue是否生效

在 JavaScript 中&#xff0c;forEach() 和 map() 是数组的方法&#xff0c;它们都接受一个函数作为参数&#xff0c;并对数组中的每个元素执行该函数。虽然它们在功能上类似&#xff0c;但是它们的行为略有不同&#xff0c;特别是在处理函数内部的 break、continue 和 return …

python ERA5 画水汽通量散度图地图:风速风向矢量图、叠加等高线、色彩分级、添加shp文件、添加位置点及备注

动机 有个同事吧&#xff0c;写论文&#xff0c;让我帮忙出个图&#xff0c;就写了个代码&#xff0c;然后我的博客好久没更新了&#xff0c;就顺便贴上来了&#xff01; 很多人感兴趣风速的箭头怎样画&#xff0c;可能这种图使用 NCL 非常容易&#xff0c;很多没用过代码的小…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…

idea的插件,反编译整个jar包

idea的插件&#xff0c;反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下&#xff1a;2.2 选中jar包&#xff0c;点出右键 3.不用插件&#xff0c;手动查看某一个java类3.1 选中jar包&#xff0c;点出右键 1.安装插件 1.1找到插…

Liunx作业控制

目录 作业控制之jobs 常用作业相关命令 1.查看当前CPU负载 2.查看当前磁盘负载 3.查看内存使用 4.linux启动过程 5.查看系统的版本和内核 6.修改主机名 作业控制之jobs 作业控制指的是控制正在运行的进程的行为。比如&#xff0c;用户可以挂起一个进程或者放到后台…

C# Solidworks二次开发:枚举应用实战(第七讲)

大家好&#xff0c;今天还是介绍我们枚举应用实战系列。 下面开始介绍枚举&#xff1a; &#xff08;1&#xff09;第一个为swTableColumnTypes_e&#xff0c;这个枚举的含义为表的类型&#xff0c;下面是官方的具体枚举值&#xff1a; MemberDescriptionswBendTableColumnT…

Linux网络编程---Socket编程

一、网络套接字 一个文件描述符指向一个套接字(该套接字内部由内核借助两个缓冲区实现。) 在通信过程中&#xff0c;套接字一定是成对出现的 套接字通讯原理示意图&#xff1a; 二、预备知识 1. 网络字节序 内存中的多字节数据相对于内存地址有大端和小端之分 小端法&…