已知有序的序列,比如: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; }