不懂就问
查看原帖
不懂就问
956382
Ravener楼主2024/5/12 22:10

二分查找函数中的左界限为何要多加1

bool bi-sort(int num[],int left,int right,int t)
{
	int l=left+1,r=right;
	while(l<=r)
	{
		int mid=l+((r-l)/2);
		if(num[mid]>t)
			r=mid-1;
		else if(num[mid]<t)
			l=mid+1;
		else return true;
	}
	return false;
}

这样AC

bool bi-sort(int num[],int left,int right,int t)
{
	int l=left,r=right;
	while(l<=r)
	{
		int mid=l+((r-l)/2);
		if(num[mid]>t)
			r=mid-1;
		else if(num[mid]<t)
			l=mid+1;
		else return true;
	}
	return false;
}
bool bi-sort(int num[],int left,int right,int t)
{
	int l=left,r=right;
	while(l<=r)
	{
		int mid=l+((r-l)/2);
		if(num[mid]>t)
			r=mid-1;
		else if(num[mid]<t)
			l=mid+1;
		else return true;
	}
	return false;
}

这样会WA三个点

2024/5/12 22:10
加载中...