二分查找算法详解:Java代码实现及实例演示
二分查找算法详解:Java代码实现及实例演示
二分查找(Binary Search),也称为二分搜索,是一种高效的搜索算法,用于在有序数组或列表中查找目标元素的位置。
二分查找的工作原理
二分查找算法的核心思想是:将目标值与数组的中间元素进行比较。
- 如果目标值等于中间元素,则目标元素已找到,返回其索引。
- 如果目标值小于中间元素,则目标元素位于数组的左半部分,继续在左半部分进行二分查找。
- 如果目标值大于中间元素,则目标元素位于数组的右半部分,继续在右半部分进行二分查找。
重复以上步骤,直到找到目标元素或搜索范围为空为止。
Java代码实现
public class BinarySearch {
public static int binarySearch(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid; // 目标元素找到,返回索引
} else if (nums[mid] < target) {
left = mid + 1; // 目标元素在右半部分,缩小搜索范围为右侧
} else {
right = mid - 1; // 目标元素在左半部分,缩小搜索范围为左侧
}
}
return -1; // 目标元素未找到,返回-1
}
public static void main(String[] args) {
int[] nums = {1, 3, 5, 7, 9};
int target = 5;
int result = binarySearch(nums, target);
if (result != -1) {
System.out.println('目标元素 ' + target + ' 在数组中的索引为 ' + result);
} else {
System.out.println('目标元素 ' + target + ' 未找到');
}
}
}
在上述代码中:
binarySearch方法接受一个有序数组nums和目标元素target作为参数,并返回目标元素在数组中的索引(如果找到)或者-1(如果未找到)。- 算法使用
left和right两个指针来表示搜索范围。 - 在每次迭代中计算中间元素的索引
mid。 - 根据中间元素与目标元素的比较结果,将搜索范围缩小一半,并通过更新
left和right指针来进行下一轮迭代。
实例演示
在上面的main方法中,我们定义了一个有序数组nums和目标元素target。调用binarySearch方法进行查找,并将结果打印输出。
总结
二分查找是一种高效的搜索算法,其时间复杂度为O(log n),其中n为数组的长度。 compared to linear search with O(n) complexity. 但需要注意的是,二分查找算法只适用于有序数组。
原文地址: https://www.cveoy.top/t/topic/Q2O 著作权归作者所有。请勿转载和采集!