二分搜索

很简单的算法,现在用的是循环的形式的。注意中间变量设置成x+(y-x)/2(紫书上说为了确保靠近区间起点)左边变大设置成x=t+1;右边变小设置成y=t;

代码(基本思路,可以随意转换实现历程)

int bs(int n)
{
	int sum=1;
	int x=1;
	int y=1000;
	int t;
	while(x<y)
	{
		t=x+(y-x)/2;
		if(t==n)
		{
			num[p++]=t;
			break;
		}
		else if(t<n)
		{
			num[p++]=t;
			x=t+1;
		}
		else if(t>n)
		{
			num[p++]=t;
			y=t;
		}
		sum++;
	}
	return sum;
}
原文地址:https://www.cnblogs.com/baccano-acmer/p/9784644.html