题目描述
输入一个数n,然后输入n个数值各不相同,再输入一个值x,输出这个值在这个数组中的下标(从0开始,若不在数组中则输出-1)。
输入
测试数据有多组,输入n(1<=n<=200),接着输入n个数,然后输入x。
输出
对于每组输入,请输出结果。
样例输入
4
1 2 3 4
3
样例输出
2
本地调试看不出毛病,求大神帮看看
#include <iostream>
#include <algorithm>
using std::cin;
using std::cout;
using std::endl;
using std::sort;
const int MaxSize = 210;
int a[MaxSize];
int main(){
int n,x,k;
while(cin >> n){
for( int i = 0 ; i < n ; i++ ){
cin >> a[i];
}
sort( a , a + n );
cin >> x;
k = n / 2;
for( int i = 0 ; i <= n ; k = ( i + n ) / 2 ){
if( a[k] == x ){
cout << k;
break;
}
if( a[k] < x )
i = k + 1;
else if( a[k] > x )
n = k - 1;
}
if(a[k] != x)
cout << -1;
cout << endl;
}
return 0;
}