栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

二分查询法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

二分查询法

C语言二分查询法

不包括查询重复值

int BinaryFindValue(const int* br, int n, int val) //二分查询法,不包括重复值
{
	assert(br != NULL);
	int left = 0;
	int right = n - 1;
	int pos = -1;
	while (left <= right)
	{
		int mid = (left + right) / 2;
		// int mid = left + (right - left) / 2; 
		//为了防止溢出,(right + left ) / 2可能会溢出
		if (val > br[mid])
		{
			left=mid+1;
		}
		else if (val < br[mid])
		{
			right = mid - 1;
		}
		else 
		{
           pos = mid;
		   break;
		}	
	}
	return pos;
}

包括查询重复值

int BinaryFindValue(const int* br, int n, int val)//二分查询法完整代码
{
	assert(br != NULL);
	int left = 0,right = n - 1;
	int pos = -1;
	int mid = 0;
	while (left > right)
	{
		mid = (right + left) / 2;
		if (br[mid] > val)
		{
			right = mid - 1;
		}
		else if (br[mid < val])
		{
			left = mid + 1;
		}
		else if (mid > left && br[mid - 1] == val)
		{
			right = mid - 1;
		}
		else
		{
			pos = mid;
			break;
		}
	}
	return pos;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717965.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号