欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

查找-二分查找(折半查找)

程序员文章站 2022-03-14 20:35:38
...

前提要求:

  1. 采用顺序表存储
  2. 元素有序排序列
	// 非递归二分查找
	public int binarySearch(int[] a, int target) {
		int l = 0, h = a.length - 1;
		while (l <= h) {
			int mid = (l + h) / 2;
			if (a[mid] == target) return mid;
			else if (a[mid] < target) l = mid + 1;
			else h = mid - 1;
		}
		return -1;
	}
	// 递归二分
	public int binarySearch(int[] a, int l, int h, int t) {
		// 递归出口
		if (t < a[l] || t > a[h] || l > h) return -1;
		int mid = (l + h) / 2;
		if (a[mid] == t) return mid;
		else if (a[mid] < t) {
			l = mid + 1;
			return binarySearch(a, l, h, t);
		} else {
			h = mid - 1;
			return binarySearch(a, l, h, t);
		}
	}

参考链接