已知有序的序列,比如:2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,91,95
有整数x,比如: x=23
要求找到一个刚好比x稍微大一点的元素位置
当数组较大的时候,需要二分查找加快速度。
public class BinarySearch {
static int f(int[] a, int begin, int end, int n) {
if(end-begin==1) {
if(a[begin] > n) return begin;
return end;
}
int k = (begin+end)/2;
if(n>=a[k]) return f(a, k, end, n);
return f(a, begin, k, n);
}
static int f(int[] a, int n) {
if(n>=a[a.length-1]) return -1;
return f(a, 0, a.length, n);
}
public static void main(String[] args) {
int[] a = {2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,91,95};
System.out.println(f(a,23));
}
}