您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
在Java中,二分查找(Binary Search)是一种高效的查找算法,适用于已排序的数据集合。它通过反复将查找范围减半来快速定位目标元素。以下是二分查找的实现步骤和示例代码:
初始化指针:
left
:指向数组的起始位置(索引0)。right
:指向数组的末尾位置(索引length - 1
)。循环查找:
left
小于或等于right
时,执行以下步骤:
mid
:mid = left + (right - left) / 2
。这样可以避免直接相加可能导致的整数溢出。array[mid]
与目标值target
:
array[mid] == target
,则找到目标元素,返回索引mid
。array[mid] < target
,说明目标元素在右半部分,更新left = mid + 1
。array[mid] > target
,说明目标元素在左半部分,更新right = mid - 1
。未找到目标元素:
-1
表示查找失败。public class BinarySearch {
/**
* 二分查找算法
* @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; // 未找到目标元素
}
public static void main(String[] args) {
int[] sortedArray = {1, 3, 5, 7, 9, 11, 13, 15};
int target = 7;
int result = binarySearch(sortedArray, target);
if (result != -1) {
System.out.println("目标元素 " + target + " 的索引是: " + result);
} else {
System.out.println("目标元素 " + target + " 未找到");
}
}
}
left + (right - left) / 2
而不是(left + right) / 2
,以避免整数溢出。通过以上步骤和示例代码,可以在Java中实现高效的二分查找算法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。