
编译代码如上
具体操作:
第一步确定主题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
本文介绍了如何利用二分法在有序数组中查找特定值的详细步骤,包括确定主函数、设置循环、应用二分法原理,并通过举例说明了查找值大于或小于中间值时的不同处理方式。最后,文章讨论了如何根据查找结果区分是否成功并返回相应标志。
1423





