我们再来把顺序查找的实现方法完整地复习一遍。在这一个难题里,我们要求先向顺序表中插入一些元素,之后再输入我们需要查找的值。你的程序需要输出查找次数以及最终的查找结果。
我们已经把大体的代码框架写好了,你只需要在正确的位置补全代码就好了。这道题目的难度不大,相信同学们一定能完成。
输入格式
输入一共有两个部分。第一部分为插入元素,插入元素部分的第一行为一个整数 nn(1 \leq n \leq 1001≤n≤100)。第二行为 nn 个整数,代表依次插入到顺序表表尾的元素。我们保证最终形成的顺序表是数值递增的。
输入的第二部分是查找元素。查找元素部分的第一行为一个整数 mm(1 \leq m \leq 1001≤m≤100)。第二行为 mm 个整数,代表依次要查找的元素的值。
输出格式
输出一共有 mm 行,mm 为需要查找的元素的个数。每一行输出的格式为p q
,其中 pp 代表查找的次数,qq 代表最终的查找结果,如果查找到目标元素返回它的下标,否则输出failed
。
#include <stdio.h>
int search(int *data, int length, int value) {
for(int i=0;i<length;i++)
{
if(data[i]==value)
{
return i;
}
else if(data[i]>value)
{
return -i-1;
}
}
return -length;
}
int main() {
int n,a[100];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int m=0,searchnum;
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d",&searchnum);
int result=search(a,n,searchnum);
if(result>=0)
{
printf("%d %d\n",result+1,result);
}
else
{
printf("%d %s\n",-result,"failed");
}
}
return 0;
}