二分查找

二分查找

  • 循环式
public static int binarySearch(int[] array, int key) {
	int low = 0, high = array.length - 1;
	while (low <= high) {
		int mid = (low + high) / 2;
		if (array[mid] > key) {
			high = mid - 1;
		} else if (array[mid] < key) {
			low = mid + 1;
		} else {
			return mid;
		}
	}
	return -1;
}

  • 递归式
public static int binarySearch(int[] array, int key, int low, int high) {
	int mid = (low + high) / 2;
	if (array[mid] > key) {
		high = mid - 1;
		if (low > high) {
				return -1;
		}
		return binarySearch(array, key, low, high);
	} else if (array[mid] < key) {
		low = mid + 1;
		if (low > high) {
				return -1;
		}
		return binarySearch(array, key, low, high);
	} else {
		return mid;
	}
}
posted @ 2017-05-27 18:40  just_yang  阅读(127)  评论(0编辑  收藏  举报