二分查找在很多领域都有涉及。
凡是涉及到在排好序的地方查找的都就可以考虑用二分来优化查找效率。不一定全局都排好才行,只要某个部分是排好的,就可以针对该部分进行二分查找,这是很多题目优化查找的重要途径。
二分查找就是将中间结果与目标进行比较,一次去掉一半,,直到找到要的那个值,效率很高。
public static int binarySearch(int[] array, int low, int high, int target) {
while (low <= high) {
int mid = low + ((high - low) >> 1);
if (array[mid] == target) {
return mid;
} else if (array[mid] > target) {
// 由于array[mid]不是目标值,因此再次递归搜索时,可以将其排除
high = mid - 1;
} else {
// 由于array[mid]不是目标值,因此再次递归搜索时,可以将其排除
low = mid + 1;
}
}
return -1;
}
这是经典的二分查找代码,一次比较就可以在当前范围内去掉一半的元素,效率很高。