二分查找法(折半查找)
//二分查找返回要查找目标元素的下标
// array是查找有序数组的范围 target是目标元素
public static int binary(int[] array, int target) {
int left = -1;
int right = array.length;
while (left + 1 < right) {
int mid = (left + right) / 2;//中间元素的地址
if (array[mid] < target) {
left = mid;
} else if (array[mid] > target) {
right = mid;
} else {
return mid;
}
}
//如果没找到,返回-1
return -1;
}
这种写法适用于大多数的二分查找,不用不停的思考参数和区间的开闭。算是一种总结性的,比较普适的写法。
要是需要更深的理解二分查找算法的思想,可以借助阅读这篇文章:C语言 二分查找法<Binary Search>(折半查找)具体实现。