/*
二分法查找算法是基于排序的基础之上
*/
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {4, 5, 6, 7, 8};
int index = indexSearch(arr, 7);
System.out.println(index == -1 ? "该元素不存在" : "该元素下标:" + index);
}
/**
* 从数组中查找目标元素的下标。
* @param arr 被查找的数组(已进行排序)
* @param dest 目标元素
* @return -1表示该元素不存在,其他表示返回该元素的下标。
*/
public static int indexSearch(int[] arr, int dest) {
// 开始元素下标
int begin = 0;
// 结束元素下标
int end = arr.length - 1;
// 开始元素只要在结束元素的左边,就继续循环二分查找
while (begin <= end) {
// 中间元素下标
int mid = (begin + end) / 2;
// 目标元素刚好为中间元素
if (arr[mid] == dest) {
return mid;
// 目标元素在中间元素的右边
} else if (arr[mid] < dest) {
begin = mid + 1;
// 目标元素在中间元素的左边
} else {
end = mid - 1;
}
}
return -1;
}
}
javase:数组:二分查找
最新推荐文章于 2024-07-13 22:56:10 发布