……

已知有序的序列,比如:2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,23,91,95
有整数x,比如: x=23
要求找到一个刚好比x稍微大一点的元素位置

当数组较大的时候,需要二分查找加快速度。

#include<iostream>
using namespace std;
int f(int a[],int begin,int end,int x)
{
    if(end-begin==1)
    {
        if(a[begin]>x)return begin;
        else return end;
        
    }
    int k=(begin+end)/2;
    if(x>=a[k]) return f(a,k,end,x);
    return f(a,begin,k,x);
}
int f(int a[],int x)
{
    if(x>=a[8])return -1;
    return f(a,0,9,x);
}
int main()
{
    int a[10]={1,2,4,5,6,7,8,9,10};
cout<<f(a,10)<<endl;
    return 0;
}

 

posted on 2018-03-19 21:38  兔子子子  阅读(101)  评论(0)    收藏  举报