二分查找---定界

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

猜你喜欢

转载自blog.csdn.net/chunjiekid/article/details/79232974