题目描述
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出
对于每组输入,请输出结果。
样例输入 Copy
4
1 2 3 4
3
样例输出 Copy
2
代码
#include<stdio.h>
int a[101];
int search(int a[], int left, int right, int x) {
int mid;
while(left<=right){
mid=(left+right)/2;
if(a[mid]==x) return mid-1;
else if(a[mid]>x) right=mid-1;
else left=mid+1;
}
return -1;
}
int main() {
int n,x;
while (scanf("%d", &n) != EOF) {
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
scanf("%d",&x);
printf("%d\n",search(a,1,n,x));
}
}