查找算法
查找算法
二分查找
-
二分查找(Binary Search)是一种高效的查找算法,适用于在有序数组或列表中查找特定元素。
-
基本原理:
- 有序数组:二分查找要求数组或列表必须是有序的(升序或降序)。
- 中间值比较:通过比较目标值与数组中间元素的大小关系,决定下一步查找的范围。
- 逐步缩小范围:每次比较后,查找范围会缩小一半,直到找到目标值或范围为空。
-
算法步骤:
- 初始化:
- 定义两个指针:
left和right,分别指向数组的起始和末尾。 left = 0,right = len(array) - 1。
- 定义两个指针:
- 循环查找:
- 计算中间位置:
mid = left + (right - left) // 2。 - 比较中间值
array[mid]与目标值target:- 如果
array[mid] == target,找到目标,返回mid。 - 如果
array[mid] < target,目标在右半部分,更新left = mid + 1。 - 如果
array[mid] > target,目标在左半部分,更新right = mid - 1。
- 如果
- 计算中间位置:
- 终止条件:
- 当
left > right时,查找范围为空,表示目标值不存在,返回-1。
- 当
- 初始化:
-
代码实现:
-
public static int binarySearch(int[] arr, int target) { //初始化指针 int left = 0; int right = arr.length-1; //循环查找 while (left <= right) { //计算中间位置 int mid = (left + right) / 2; //比较中间值和目标值 if(arr[mid]==target){ return mid; } if (arr[mid] > target) { right = mid - 1; } else if (arr[mid] < target) { left = mid + 1; } } return -1; }
-

浙公网安备 33010602011771号