二分搜素查找某个值

本文详细介绍了二分搜索算法的工作原理,通过实例展示了如何使用二分搜索法在有序数组中查找特定值。内容涵盖二分搜索的时间复杂度分析及其在实际问题中的应用,帮助读者深入理解并掌握这一高效查找技术。
摘要由CSDN通过智能技术生成
/*
	设 a[0:n-1]是已排好序的数组,请改写二分搜索算法,
	使得当搜索元素 x 不在数组中时,
	返回小于 x 的最大元素位置 i 和大于 x 的最小元素位置 j。
	当搜索元素在数组中时,i 和 j 相同, 均为 x 在数组中的位置。
*/
#include<cstdio>
#include<algorithm>
using namespace std;
/*
定义查找函数,三个变量依次为 数组、数组长度、待查找元素 
*/
int Search(int b[], int b_length, int b_num)
{
	int b_detection = -1;		//待查找元素的标志位
	int b_right = b_length - 1; 	// 数组的右边界
	int b_middle = 0;  			//中间值的标志位 
	int b_left = 0; 			//数组的左边界
	
	/*二分查找*/
	while(b_left <= b_right)
	{
		b_middle = (b_left + b_right) / 2;
		if(b[b_middle] == b_num)		//找到了待查找元素 
		{
			b_detection = b_middle;	//待查找元素的标志位等于b_middle的标志位 
		}
		/*数组元素有序
		待查找元素小于中间值  往中间值的左边查找
		将中间值(包括中间值)右边的数据舍去 
		即 -- 将数组的右边界 b_right更新为b_middle - 1 
		*/
		if(b[b_middle] > b_num)
		{
			b_right = b_middle - 1; 
		}
		else
		{
			b_left = b_middle + 1;
		}
	}
	int i = 0, j = 0;		//定义距离待查找元素两侧最近的元素的标志位
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值