找出一组数据中某个元素所在的位置。若找不到则输出-1.
#include<cstdio>
#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<vector>
#include<string>
#include<sstream>
using namespace std;
int ans;
int que;
struct node
{
int x;
int y;
}num[100];
bool cmp(node a, node b)
{
return a.x<b.x;
}
int bsearch( node *p, int x, int y, int v )
{
int m;
while( x<y )
{
m = x + ( y-x )/2;
if( p[m].x==v )
return p[m].y;
else if( p[m].x>v )
y = m;
else
x = m+1;
}
return -1;
}
int main()
{
int n;
while( scanf("%d", &n)==1 )
{
for(int i=1; i<=n; i++)
{
scanf("%d", &num[i].x);
num[i].y=i;
}
sort( num+1, num+n+1, cmp );
scanf( "%d", &que );
int ans = bsearch( num, 1, n, que );
printf( "%d\n\n", ans );
}
return 0;
}