以下代码用来求出升序数组中的一个特定下标点,该下标点的之前(包括该下标点)的所有数都小于等于目标数,之后的数都大于目标数。
#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; }