C语言当中数组的折半查找(二分)

我也是在哔哩哔哩大学跟鹏哥学的C语言,在学习当中看到这个数组的一个高效率查找的方式,也是运用到我们的循环语句实现的。

现在我就将这个代码分享给大家,也是实现自己在博客打卡

也希望各位小伙伴们一起学习

 

首先我们建立一个数组,这就会有小伙伴问了,什么是数组呢?

1.数组

数组就是相同类型集合,就比如一间教室里面都是学生,我们就可以将整个教室里的学生看成是一个数组,每一个学生就是数组的元素。[10]就是表示这个数组当中元素的个数。

注意:数组当中要注意数组的下标,规定下标是从0开始的:

了解完数组的基本介绍之后我们就开始利用数组举例了

2.创建数有序数组

我们创建了有序数组,其下标范围也就是0-9。

接下来我们创建一个我们要找到的那个值:k = 7

3.解题思路

在上面数组当中我们肯定要先观察一个数组并找到其元素的中间值,也就是5,然后我们发现7比5大,所以我们的1-5这一段就被我们排除掉饿了,也就是在我们的5右边也就是我们找的值是在6-10的中间。在这段数字当中我们再看到中间数为8,但是我们找的7比8小。也就是说我们的7在8的左边,所以右边的便被我们排除掉了。排除完之后我们发现就只剩6.7了。再进行折半即可找到。

其实思路相当的简单,但是需要将我们的思路换算成代码就是一个相对来说难一点的问题了,接下来我们就吧代码设计出来。

4.代码设计

根据上图所示,下标范围为0-9,我们将下标0设置为left、下标9设置为right。中间值就是下标4,也就是9整除2等于4。下标4也就是对应的我们数组当中的元素5.所以我们将中间的元素设置为mid。由此我们设计我们的代码:

int mid = (left + right)/2;

根据我们的上面分析,第一次排查之后我们的就只剩右边的元素了,那此时我们的下标也就就为5等于left-(mid+1)及下图:

接下来我们的中间数就是元素8了(下标7)。再一次缩小就是这次半折之后的左边,然后大家发现这是不是我们的一个循环,所以我们就可以运用我们的循环设计一个函数:

5.编译器代码编辑及注释

根据上面代码,由于我们输入的值为7,所以是能找到, 运行代码即可在终端打印。

6.感悟

我这个基本上都是在鹏哥那拿过来的只是加了一些注释,大家有兴趣的可以自己去B站进行学习,鹏哥的教学真的yyds。我也是刚开始学的小白大家有什么发现或者错误欢迎评论区指正哦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值