【C语言】使用“二分查找”寻找目标数

我们在C语言编程中,通常会在某些过程中从一组或多组数据中寻找一项符合我们要求的数。

有很多不同的代码编写方式都可以满足我们的需要,只是针对运行编译,不同的代码,运行量会使不同的效果。

例如,从1-100找到55,我们可以使用for循环,while或者do-while循环来编写代码,但是从1-55,每一个数字逐步比较的运行量会耗费一定的时间。在数学中,我们找出某个数,有一种方法叫做“二分法”,常常在数学函数中求点值会使用到。

在C语言算法中,我们也可以使用“二分法”来找到我们需要的数据。

在数学中,在一个闭区间内找到某个值,我们会把这个值与闭区间中间值进行比较,若该值比闭区间中间值小,则在中间值以左的左区间寻找,直接舍弃右区间;同理,若该值比闭区间中间值大,则在中间值以右的右区间寻找,直接舍弃左区间。

在C语言中,我们若在一个数组中寻找某数k,则把k与数组中间数对比(前提是数组是有序数组),若k比数组中间数小,则直接舍弃数组中间数右的数据,减少比较次数;若k比数组中间数大,则直接舍弃数组中间数左的数据,减少比较次数。

我们不妨定义数组有10个元素,并获取数组长度,最左端的下标为left , 最右端的下标为right ,要找的数为k ,则有如下所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值