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 作为参数。该方法使用二分查找算法在数组中查找指定的值。

二分查找算法步骤:

  1. 初始化两个指针 leftright,分别指向数组的第一个和最后一个元素。
  2. left 小于等于 right 时,执行以下操作:
    • 计算中间位置 mid
    • 如果 value 等于 arr[mid],则返回 mid,表示找到了目标值。
    • 如果 value 大于 arr[mid],则将 left 移动到 mid + 1,继续在数组的右半部分查找。
    • 如果 value 小于 arr[mid],则将 right 移动到 mid - 1,继续在数组的左半部分查找。
  3. 如果循环结束仍未找到目标值,则返回 -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;

通过以上修正,代码可以正常编译运行,并实现二分查找的功能。

Java二分查找算法实现与代码示例

原文地址: https://www.cveoy.top/t/topic/xF7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录