蓝桥杯:二分查找

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

猜你喜欢

转载自blog.csdn.net/weixin_44260464/article/details/105625951