-
准备工作:
- 确保输入数组是已排序的。若不是,需要先进行排序。
-
设置边界:
- 使用两个变量
low
和high
,分别指向数组的开头和结尾。
- 使用两个变量
-
查找过程:
- 计算中间索引
mid
为(low + high) / 2
。 - 比较中间元素
array[mid]
与目标值:- 如果相等,返回
mid
。 - 如果
array[mid]
小于目标值,说明目标在右半部分,于是更新low = mid + 1
。 - 如果
array[mid]
大于目标值,说明目标在左半部分,于是更新high = mid - 1
。
- 如果相等,返回
- 计算中间索引
-
结束条件:
- 当
low
超过high
时,表示目标值不在数组中,返回 -1。
- 当
-
java示例代码
public class BinarySearchExample { public static void main(String[] args) { int[] sortedArray = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}; int target = 14; int index = binarySearch(sortedArray, target); if (index != -1) { System.out.println("目标值 " + target + " 在数组中的索引为: " + index); } else { System.out.println("目标值 " + target + " 不在数组中"); } } public static int binarySearch(int[] array, int target) { int low = 0; int high = array.length - 1; while (low <= high) { int mid = low + (high - low) / 2; // 计算中间索引 // 检查中间元素 if (array[mid] == target) { return mid; // 找到目标值 } else if (array[mid] < target) { low = mid + 1; // 向右查找 } else { high = mid - 1; // 向左查找 } } return -1; // 未找到目标值 } }
java二分查找实现思路
最新推荐文章于 2024-10-07 11:22:30 发布