目录
1152:题目描述
在有序序列中查找某一元素x。
输入
首先输入一个正整数n(n<=100000),表示该序列有n个整数,然后按从小到大的顺序输入n个整数;
接着是一个正整数m,表示有m次查找;
最后是m个整数,表示m个要查找的整数x。
输出
对于每一次查找,有一行输出。若序列中存在要查找的元素x,则输出元素x在序列中的序号(序号从0开始);若序列中不存在要查找的元素x,则输出"Not found!"。
答案:
(递归版)
#include<stdio.h>
int main()
{
int n,m,i,a[99999];
scanf("%d",&n);
for(i=0; i<n; i++)
scanf("%d",&a[i]);
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
if(fx(a,m,0,i-1)!=-1)
printf("%d\n",fx(a,m,0,i-1));
else
printf("Not found!\n");
}
return 0;
}
int fx(int a[],int x,int low ,int high)
{
int mid=(low+high)/2;
if(low>high)
return -1;
else
{
if(x==a[mid])
return mid;
if(x<a[mid])
return fx(a,x,low,mid-1);
else
return fx(a,x,mid+1,high);
}
}