M--二分查找
Problem Description
Input
Output
Sample Input
5 1 3 5 7 9 3 1 5 8
Sample Output
1 3 -1
Hint
Source
#include<stdio.h>
int s[3000010];
int fun(int a[], int s, int t, int key)
{
int low = s, high = t, mid;
if(s <= t)
{
mid = low + (high - low)/2;
if(a[mid] == key)
{
return mid + 1;
}
else if(a[mid] > key)
{
return fun(a, low, mid - 1, key);
}
else return fun(a, mid + 1, high, key);
}
return - 1;
}
int main()
{
int n, i, x;
int a, p;
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d", &s[i]);
}
scanf("%d", &x);
while(x--)
{
scanf("%d", &a);
p = fun(s, 0, n - 1, a);
printf("%d\n", p);
}
return 0;
}