赞
踩
二分查找(Binary Search)是一种高效的查找算法,适用于在有序数组中快速定位目标值。相比于线性查找,二分查找能够显著减少查找时间复杂度,从O(n)降低到O(log n)。本文将详细介绍二分查找算法的原理,并给出Java实现代码。
二分查找算法的基本思路如下:
left
和right
,初始时分别为数组的起始和结束位置。mid
的位置,mid = left + (right - left) / 2
。mid
位置的元素,则查找成功,返回mid
。mid
位置的元素,则缩小查找范围到数组左半部分,即调整right = mid - 1
。mid
位置的元素,则缩小查找范围到数组右半部分,即调整left = mid + 1
。left > right
)。下面是Java实现二分查找算法的代码:
- public class BinarySearch {
- public static void main(String[] args) {
- int[] sortedArray = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
- int target = 7;
- int result = binarySearch(sortedArray, target);
-
- if (result != -1) {
- System.out.println("目标值 " + target + " 在数组中的索引位置是:" + result);
- } else {
- System.out.println("目标值 " + target + " 不在数组中。");
- }
- }
-
- /**
- * 二分查找算法
- *
- * @param array 有序数组
- * @param target 目标值
- * @return 目标值的索引位置,若不存在则返回-1
- */
- public static int binarySearch(int[] array, int target) {
- int left = 0;
- int right = array.length - 1;
-
- while (left <= right) {
- int mid = left + (right - left) / 2;
-
- if (array[mid] == target) {
- return mid;
- } else if (array[mid] < target) {
- left = mid + 1;
- } else {
- right = mid - 1;
- }
- }
-
- return -1; // 目标值不存在于数组中
- }
- }
binarySearch
方法:接受两个参数——有序数组和目标值,返回目标值在数组中的索引位置。如果目标值不存在于数组中,则返回-1。left
初始化为0,right
初始化为数组长度减1。left
小于等于 right
的条件下,不断计算中点 mid
,并根据目标值与 mid
位置元素的比较结果调整 left
和 right
。left > right
),则返回-1。二分查找算法是一种高效的查找方法,尤其适用于大规模有序数据集。通过不断缩小查找范围,二分查找能够在对数时间内定位目标值。掌握并理解二分查找算法,对提高算法设计和编程能力具有重要意义。
希望本文对你理解和实现二分查找算法有所帮助!如果有任何疑问或建议,欢迎在评论区留言。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。