利用二分查找搜寻所有待查找数据
利用二分法在一个有N(N≤20)个元素的有序数列中查找指定值y。找到y后,先输出查找次数,再输出其在数组中对应的下标。若数列中存在多个y,将所有y的位置按下标序号顺序输出;
否则输出“not found”.
输入格式:
输入在第1行中给出1个不大于20的数N。在第2行给出N个数(升序),以空格分隔。最后在第3行给出待查找数据y。
输出格式:
若数列中存在y:先输出查询次数,在其后每行以格式“位置:k”,输出一个位置值。
若数列中没有y:输出“not found”。
int main()
{
int a[100],i,j,n,x,m,count=0;
scanf("%d",&n);
for(i=0;i"%d",&a[i]);
scanf("%d",&x);
for(i=1,j=n;i<=j;){
m=(i+j)/2;
count+=1;
if(x>a[m]) i=m+1;
if(xj=m-1;
if(x==a[m]) break;
}
if(i>j) printf("not found");
if(i<=j){
printf("查找次数%d\n",count);
for(i=1;i<=n;i++)
if(x==a[i]) printf("位置:%d\n",i);
}
}
上下发重 你看一下格式