查找 |
||
|
||
description |
||
给你一串没有重复数字的递增序列,我们想要知道自己输入的数字在该序列的哪个位置。当然该序列的数字比较多。
|
||
input |
||
测试数组有多组,每组测试数据第一行输入一个整数n,(1<=n<=100000)
第二行开始有n个非负整数,各不相同并且递增,并且每个数小于10000000。第三行输入一个整数m,代表需要查找的次数。接下来有一行,有m个查询的数字,且小于10000000.
|
||
output |
||
对于每次查询,如果该序列中存在该查询的数,就输出他的位置;如果不存在,则输出”Not find!”
|
||
sample_input |
||
6
0 1 2 3 4 5
3
-1 5 6
7
0 2 4 6 8 10 12
4
0 12 -3 3
|
||
sample_output |
||
Not find!
5
Not find!
0
6
Not find!
Not find!
|
直接上代码:
1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 5 int main() 6 { 7 int n,m,s,e,t,x,f,k,i,a[100001]; 8 while(cin>>n) 9 { 10 for(i=0;i<n;i++) scanf("%d",&a[i]); 11 cin>>t; 12 for(i=0;i<t;i++) 13 { 14 scanf("%d",&x); 15 s=0;e=n-1;f=0; 16 while(s<=e) 17 { 18 m=(s+e)/2; 19 if(a[m]<x) s=m+1; 20 if(a[m]>x) e=m-1; 21 if(a[m]==x) {f=1;k=m;break;} 22 } 23 if(f==1) printf("%d\n",k); 24 if(f==0) printf("Not find!\n"); 25 } 26 } 27 return 0; 28 }
浙公网安备 33010602011771号