PTA基础编程题目集 6-13 折半查找

题目:6-13 折半查找 - 基础编程题目集https://pintia.cn/problem-sets/14/exam/problems/type/6?problemSetProblemId=44932&page=0思路:每次查找的区间左端点设为low,右端点设为high,mid=(low+high)/2,第一次查找的区间范围是[0,leghth-1],每次查找都将查找区间的区间中点的值与k比较,因为是递增数列,比k大说明k在中点mid的左边那个区间,下次查找的区间的右端点就是mid-1,比k小下次查找区间的左端点就是mid+1,如果和k相等说明mid就是我们要找的k值的下标,如此循环直至low==high时,mid下标所在的值还不等于k,说明不存在k。

代码如下:

int  Search_Bin(SSTable T, KeyType k){
    int low=0,high=T.length-1;
	while(high>=low){
		int mid=(low+high)/2;
		if(T.R[mid].key==k){
			return mid;
		}else if(T.R[mid].key>k){
			high=mid-1;
		}else{
			low=mid+1;
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值