以下代码用来求出升序数组中的一个特定下标点,该下标点的之前(包括该下标点)的所有数都小于等于目标数,之后的数都大于目标数。
#include <stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
int buf[1000];
int main(){
int N,m;
while(scanf("%d",&N)!=EOF){
for(int i=0;i<N;i++){
cin>>buf[i];
}
cin>>m;
while(m--){
int no;
cin>>no;
int mid;
int i,j;
for(i=0,j=N-1;i<=j;){
mid=(i+j)/2;
if(buf[mid]<no){
i=mid+1;
}
else if(buf[mid]>no){
j=mid-1;
}
else{
break;
}
}
cout<<mid<<endl;
}
}
return 0;
}