当前位置: 首页 > 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. 选自百度文库中的其中一篇“二分法在生活中的应用.” ↩︎

相关文章:

  • Blender + Marvelous Designer(MD)服装,Quad Remesher四边面拓扑布线、UV投射
  • 【ARM Cache 系列文章 1.1 -- Cache size 读取详细介绍及代码实现】
  • STM32F103单片机工程移植到航顺单片机HK32F103注意事项
  • Diffusers代码学习: T2I Adapter
  • 在vscode 中使用npm的问题
  • 【Spring Boot】异常处理
  • cad导入su线条不在一个平面怎么办?
  • Java | Leetcode Java题解之第132题分割回文串II
  • 分享一个用python写的本地WIFI密码查看器
  • 【risc-v】arm和riscv有什么关系或者联系?
  • Elasticsearch 管道查询语言 ES|QL 现已正式发布
  • 归一化在神经网络训练中的作用
  • 如何在React中创建自定义Hooks
  • python数据分析-ZET财务数据分析
  • Java数据结构与算法(盛水的容器)
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • miaov-React 最佳入门
  • React-flux杂记
  • 机器学习中为什么要做归一化normalization
  • 开源SQL-on-Hadoop系统一览
  • 七牛云假注销小指南
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 移动端高清、多屏适配方案
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (ZT)出版业改革:该死的死,该生的生
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (顺序)容器的好伴侣 --- 容器适配器
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)德国人的记事本
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @PreAuthorize与@Secured注解的区别是什么?
  • [2016.7.Test1] T1 三进制异或
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [Algorithm][动态规划][两个数组的DP][正则表达式匹配][交错字符串][两个字符串的最小ASCII删除和][最长重复子数组]详细讲解
  • [Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
  • [BZOJ] 2427: [HAOI2010]软件安装
  • [BZOJ4566][HAOI2016]找相同字符(SAM)
  • [C#基础知识系列]专题十七:深入理解动态类型
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [CISCN2019 华东南赛区]Web4
  • [Google Guava] 1.1-使用和避免null
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [iOS]随机生成UUID通用唯一识别码
  • [Jquery] 实现温度计动画效果
  • [leveldb] 2.open操作介绍
  • [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱