二分法实现寻找数字(新手导向)

本文介绍了如何利用二分法在有序数组中查找特定值的详细步骤,包括确定主函数、设置循环、应用二分法原理,并通过举例说明了查找值大于或小于中间值时的不同处理方式。最后,文章讨论了如何根据查找结果区分是否成功并返回相应标志。

 

编译代码如上

具体操作:

第一步确定主题main函数

 第二步确定引用数组,框用循环

 

第三步,引用二分法的概念

 此处就对照 数组arr1中{1,2,3,4,5,6,7,8,9,10}中的下标

                                       0 1 2 3 4 5 6 7 8 9 

 通过不断二分,依次靠近所要迫近的值,根据取模进一步区分  中间值与所取值的大小关系。

具体操作如下, 

第一种,查找的值比第一次二分的值要大     

例如  我想查找的值为7 

第一次取中间值为   (0+9)/2 =4  即下标为四的那个数字=5       由于5<7  ,那么需要进一步精确二分的范围      

那么对左侧left 进行操作  即   left=mid+1,则数组变为了 {1 2 3 4 5(left) 6 7 8 9(right) }

第二次取中间值为(9+5)/2=7    正好与我们想要查找的数字一样,那么查找成功。

第二种,查找的值比第一次二分的值要小

例如  我想查找的值为3

第一次取中间值为   (0+9)/2 =4  即下标为四的那个数字=5       由于3<5 ,那么需要进一步精确二分的范围

对右侧right进行操作,即 right=mid-1,则数组变为了{0(left),1,2,3,4(right),5,6,7,8,9,}

第二次取中间值为(0+4)=2  由于2<3 ,那么对左侧进行操作。

left=mid+1=3,那么数组变为了{0.1.2.3(left).4(right).5.6.7.8.9.}

第三次取中间值为(3+4)/2=3  那么查找完毕。

函数主体如下

 

第四步,跳出循环,分析函数

 由分析可知,无论查找成功或者失败,都会跳出循环来到外围函数,则需要对其进行区分

我在查找成功函数中定义了一个answer的变量。

若查找成功则answer会+1.若未查找成功,那么answer还是未0

通过此处进一步区分查找的结果

代码如下:

区分查找结果

 

 

 

第五步,return 0;检查调试函数

 

 

完毕总结

第一次写博客,有错误或者值得改进的地方欢迎大家一起探讨,之后会陆续更新新的代码。欢迎关注

2023.7.30李毅飞 @Homogen

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值