二分法查找C语言

二分法查找(折半查找)

适用于数据量较大,且数据是排好序的。

解题思路:假设数据是按升序排序的,对于给定的要查找的k,从数列

的中间位置mid开始比较

如果arr[mid]等于k,则查找成功;

如果arr[mid]小于k,left = mid +1,则在数列的后半段查找( arr[mid+1] , arr[right] )

如果arr[mid]大于k, right= mid - 1,则在数列的前半段查找(arr[left] , arr[mid -1])

例题

给定一个数组arr[] = {1,2,3,4,5,6,7,8,9,10}要查找的值k = 7,刚开始arr[left]=1,

arr[right] = 10, mid = (0+9)/2 = 4,所以arr[mid] = 5。

k>arr[mid],所以left = mid + 1= 5,mid = (5+9)/2 = 7, 此时arr[left] = 6,

arr[mid] = 8, arr[right] = 10. k<arr[mid],所以right= mid - 1,在重新找到

mid的值,如果继续重复以上步骤知道找到为止。

代码如下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值