二分查找是时间复杂度的经典例子。
(1)算法描述:在一个有序数组中查找目标值,每次将搜索范围缩小一半。
(2)时间复杂度分析:
- 每次比较后,搜索范围缩小为原来的一半。
- 设数组长度为
,搜索范围的变化为
- 搜索次数
满足
,解得
- 因此,时间复杂度为
。
(3)代码示例
public class BinarySearch {
public static int binarySearch(int[] arr, int target) {
int left = 0; // 左边界
int right = arr.length - 1; // 右边界
while (left <= right) {
int mid = left + (right - left) / 2; // 计算中间位置,避免溢出
if (arr[mid] == target) {
return mid; // 找到目标值,返回索引
} else if (arr[mid] < target) {
left = mid + 1; // 目标值在右半部分
} else {
right = mid - 1; // 目标值在左半部分
}
}
return -1; // 未找到目标值
}
public static void main(String[] args) {
int[] arr = {1, 3, 5, 7, 9, 11, 13}; // 有序数组
int target = 7; // 目标值
int result = binarySearch(arr, target); // 调用二分查找
if (result != -1) {
System.out.println("目标值 " + target + " 的索引是: " + result);
} else {
System.out.println("目标值 " + target + " 未找到");
}
}
}
1112

被折叠的 条评论
为什么被折叠?



