Java二分查找算法实现与代码示例
import java.util.Arrays;
public class NonCoder {
public static void main(String[] args) {
int[] arr = {2, 12, 17, 31, 53, 69, 97, 142, 158, 248, 388};
System.out.println(binarySearch(arr, 53));
}
public static int binarySearch(int[] arr, int value) {
int left = 0;
int right = arr.length - 1;
while (left <= right) {
int mid = (left + right) / 2;
if (value == arr[mid]) {
return mid;
} else if (value > arr[mid]) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
}
代码解释:
这段代码定义了一个名为 binarySearch 的方法,它接受一个整型数组 arr 和一个整型值 value 作为参数。该方法使用二分查找算法在数组中查找指定的值。
二分查找算法步骤:
- 初始化两个指针
left和right,分别指向数组的第一个和最后一个元素。 - 当
left小于等于right时,执行以下操作:- 计算中间位置
mid。 - 如果
value等于arr[mid],则返回mid,表示找到了目标值。 - 如果
value大于arr[mid],则将left移动到mid + 1,继续在数组的右半部分查找。 - 如果
value小于arr[mid],则将right移动到mid - 1,继续在数组的左半部分查找。
- 计算中间位置
- 如果循环结束仍未找到目标值,则返回 -1,表示数组中不存在该值。
代码修正说明:
原始代码存在一些格式错误和语法错误,以下是对其进行的修正:
- 将
import java.util.arrays修改为import java.util.Arrays。 - 将类名
NonCoder后面的括号修改为大括号。 - 将
public static void main(String[] args)后面的括号修改为大括号。 - 将数组
arr的初始化方式修改为使用大括号括起来的整数数组元素。 - 将
System.out.printin修改为System.out.println。 - 将方法名
binarysearch修改为binarySearch。 - 将方法定义中的
rightmarr.length-1修改为right = arr.length - 1。 - 将循环条件中的
left<uright修改为left <= right。 - 将
if (value=-arr[mid]》{修改为if (value == arr[mid]) {。 - 将
if (valuecarr[mid]) (修改为if (value > arr[mid]) {。 - 将
return -1:修改为return -1;。
通过以上修正,代码可以正常编译运行,并实现二分查找的功能。
原文地址: https://www.cveoy.top/t/topic/xF7 著作权归作者所有。请勿转载和采集!