当前位置: 首页 > news >正文

算法家族之一——二分法

目录

  • 算法
  • 算法的打印效果
    • 如果算法里的整型“i”为1
    • 如果算法里的整型“i”为11
  • 算法的流程图
  • 算法的实际应用
  • 总结

大家好,我叫 这是我58,现在,请看下面的算法。

算法

#define _CRT_SECURE_NO_WARNINGS 1//<--预处理指令
#include <stdio.h><--也是预处理指令
int main() {int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//<--在哪里查int i = 1;//<--需要查的数int right = sizeof arr / sizeof arr[0]-1;int left = 0;int mid = 0;while (left <= right) {mid = (left + right) / 2;if (arr[mid] < i) { left = ++mid; }else if (arr[mid] > i) { right = --mid; }else {printf("i(%d)在arr数组里的第%d个位置",i,mid);break;}if (left > right) { printf("在arr数组里,没有“i”这个数字"); }}return 0;
}

相信大家都对这个算法不陌生吧,没错!这个算法就是我们的二分法!那么,有的人可能就不相信这个算法能正确地运行起来了,现在,如果你是这些人中的其中一个的话,就先看一下下面的内容再说吧。而且,还有这个算法的流程图呢!

算法的打印效果

如果算法里的整型“i”为1

i(1)在arr数组里的第0个位置

如果算法里的整型“i”为11

在arr数组里,没有“i”这个数字

算法的流程图

在这之中有“break”
开始
定义宏“_CRT_SECURE_NO_WARNINGS”为1
导入头文件stdio.h
定义一个有十个整形的arr数组,里面初始化为{1,2,3,4,5,6,7,8,9,10}
定义整型i为你需要查找的数
定义整型right为整型数组arr的大小除以整型数组arr中的第0项
定义整型left和mid为0
把mid设为(整型left+整型right)*2的值
arr[mid]小于i?
把left设为mid加1之后的结果
arr[mid]大于i?
把right设为mid减1之后的结果
输出“i(%d)在arr数组里的第%d个位置”(第一个“%d”代入整型i,第二个“%d”代入整型mid)
结束
left大于right?
输出“在arr数组里,没有“i”这个数字”
left小于等于right?

算法的实际应用

在刚才看完上面的内容后,你可能觉得这个算法只要没记牢就不知道怎么写了,但是,刚开始的确是这样的,可是在后来,你只要年复一年,日复一日地写这个算法,等到后来啊,就基本能够在没有看这个算法的时候写出这个算法了,并且,在能够在没有看这个算法的时候写出这个算法的时候,你就可以更方便地做下面的三件小事了。

  1. 用来求方程的近似值,就比如在公式“ f ( x ) = l n ( x ) + 2 x − 6 f(x)=ln(x)+2x-6 f(x)=ln(x)+2x6”中,只用了4次二分法就精确到了0.1。12
  2. 用来更快速地修好电路、水管、气管(只要用几次二分法,就能精准地查找并修好电路、水管或者气管的故障了)。2
  3. 用来更快地找出次品,就比如在12个从外表上来看几乎一模一样的球中,有一个次品球,这个次品球比其他球略轻,而只要用几次二分法,就可以较快地用天平找出那个次品球。32

总结

在看完这篇博客之后,我想你应该爱上了算法家族之一——二分法了吧。那么,如果你喜欢上了算法家族之一——二分法的话,可以评论或者投票来互动一下我哦。


  1. 选自搜狗问问中的名叫“用二分法求函数f(x)=lnx+2x-6在区间(2,3)零点近似值,至少经过(  )次二分后精确度达到0.1.A.2”的问题 ↩︎

  2. ↩︎ ↩︎ ↩︎

  3. 选自百度文库中的其中一篇“二分法在生活中的应用.” ↩︎

http://www.lryc.cn/news/368387.html

相关文章:

  • 【深度学习】PuLID: Pure and Lightning ID Customization via Contrastive Alignment
  • Elastic 8.14:用于简化分析的 Elasticsearch 查询语言 (ES|QL) 正式发布
  • C语言指针与数组的区别
  • springboot3一些听课笔记
  • 【小沐学Python】Python实现Web服务器(CentOS下打包Flask)
  • Cesium开发环境搭建(一)
  • 视频、图片、音频资源抓取(支持视频号),免安装,可批量,双端可用!
  • FreeRTOS实时系统 在任务中增加数组等相关操作 导致单片机起不来或者挂掉
  • CentOS 7基础操作08_Linux查找目录和文件
  • CI/CD实战面试宝典:从构建到高可用性的全面解析
  • NLP实战入门——文本分类任务(TextRNN,TextCNN,TextRNN_Att,TextRCNN,FastText,DPCNN,BERT,ERNIE)
  • MySQL: 表的增删改查(基础)
  • WDF驱动开发-PNP和电源管理(三)
  • Redis集群和高可用性:保障Redis服务的稳定性
  • C# WPF入门学习主线篇(二十一)—— 静态资源和动态资源
  • 出现 Navicat 和 Cmd 下SQL 版本 | 查询不一致的解决方法
  • 31、matlab卷积运算:卷积运算、二维卷积、N维卷积
  • C++青少年简明教程:文件
  • Kimichat使用案例010:快速识别出图片中的表格保存到Excel
  • [大师C语言(第二十四篇)]C语言指针探秘
  • Docker命令总结
  • 把chatgpt当实习生,进行matlab gui程序编程
  • LabVIEW 与组态软件在自动化系统中的应用比较与选择
  • html--万年历
  • 2013年 阿拉斯加巴罗活动层厚度和土壤含水量
  • 超详解——python数字和运算——小白篇
  • LabVIEW图像采集处理项目中相机选择与应用
  • Java——IO流(一)-(2/9):File类的常用方法(判断文件类型、获取文件信息、创建删除文件、遍历文件夹)
  • 电子设计入门教程硬件篇之集成电路IC(二)
  • Unity3D测量面积和角度实现方法(二)