利用二分法在一个有N(N≤20)个元素的有序数列中查找指定值y。找到y后,先输出查找次数,再输出其在数组中对应的下标。若数列中存在多个y,将所有y的位置按下标序号顺序输出;
否则输出“not found”.
输入格式:
输入在第1行中给出1个不大于20的数N。在第2行给出N个数(升序),以空格分隔。最后在第3行给出待查找数据y。
输出格式:
若数列中存在y:先输出查询次数,在其后每行以格式“位置:k”,输出一个位置值。
若数列中没有y:输出“not found”。文章来源:https://www.toymoban.com/news/detail-755987.html
输入样例 1:
10
34 56 78 87 87 87 87 112 520 888
87
输出样例 1:
查找次数1
位置:3
位置:4
位置:5
位置:6
输入样例 2:
10
34 56 78 87 87 87 87 112 520 888
80
输出样例 2:
not found
代码如下文章来源地址https://www.toymoban.com/news/detail-755987.html
#include<stdio.h>
int main()
{
int n,b,i,j=0,m,g,k,shu=1;
int a[20];
scanf ("%d",&n);
m=0;
g=n-1;
for (i=0;i<n;i++)
scanf("%d",&a[i]);
scanf("%d",&b);
while (m<=g)
{
k=(m+g)/2;
if (b==a[k])
{
break;
}
else if(b<a[k])
g=k-1;
else
m=k+1;
shu++;
}
for (i=0;i<n;i++)
{
if (a[i]==b)
{
if(j==0)
{
printf("查找次数%d\n",shu);
j=1;
printf("位置:%d\n",i);
}
else
{
printf("位置:%d\n",i);
}
}
}
if (j==0)
printf("not found");
return 0;
}
到了这里,关于pta7-5 利用二分查找搜寻所有待查找数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!