有序表的折半查找

        折半查找又称二分查找,其基本思想是,在顺序存储的有序序列中要查找某个关键字,首先用有序序列的中间元素和这个关键字作比较,如果小于关键字,则在上半部分查找,如果大于关键字,则在下半部分查找,如果等于关键字,则返回。不断地重复上述步骤,直到找到要查找的关键字为止,如果所查找区域没有所查找的关键字,则查找失败,返回。

         代码如下:

int Binary_Search(int *a, int n, int key)
{
	int low, high, mid;
	low = 1;
	high = n;
	while(low <=high )
	{
		mid = (low+high)/2;
		if(key<a[mid])
			high = mid -1;
		else if(key > a[mid])
			low = mid + 1;
		else
			return mid;
	}
	return 0;
}


         验证代码如下:

int main()
{
	int a[6] = {0, 1, 2, 4, 6, 7, };
	cout << Binary_Search(a, 5, 4) << endl;
	return 0;
}

 

        查找算法中除了上述的二分查找算法,还有插入查找算法和斐波那契查找算法,三种查找算法本质上分隔点的选择的不同,各有优劣,实际开发时可以根据数据的特点综合考虑再进行相应的选择。
  参考《大话数据结构》

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值