PAT练习 找x
Description
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
Input
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
Output
对于每组输入,请输出结果。
Sample Input
4 1 2 3 4 3
Sample Output
2
C++实现
简单的二分搜索
#include <stdio.h>
#include <algorithm>
using namespace std;
int binarySearch(int A[],int left,int right,int x){
int mid;
while(right>=left){
mid=left+(right-left)/2;
if(A[mid]==x){
return mid;
}else{
if(A[mid]>x){
right=mid-1;
}else{
left=mid+1;
}
}
}
return -1;
}
int main(){
int n,A[110],x;
while (scanf("%d",&n)!=EOF) {
for(int i=0;i<n;i++){
scanf("%d",&A[i]);
}
scanf("%d",&x);
sort(A,A+n);
printf("%d\n",binarySearch(A, 0, n-1, x));
}
}