很简单的算法,现在用的是循环的形式的。注意中间变量设置成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;
}