java方法

Arrays.binarySearch 

在 Java 中,数组二分查找主要有两种方式,一种是手动实现二分查找逻辑,另一种是使用 Java 标准库中提供的 Arrays.binarySearch 方法。下面分别为你详细介绍:

手动实现二分查找

手动实现二分查找可以让你更好地理解其原理,以下是一个示例代码:

 

java

public class BinarySearchExample {
    public static int binarySearch(int[] arr, int target) {
        int left = 0;
        int right = arr.length - 1;

        while (left <= right) {
            int mid = left + (right - left) / 2;
            if (arr[mid] == target) {
                return mid;
            } else if (arr[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9, 11, 13};
        int target = 7;
        int result = binarySearch(arr, target);
        if (result != -1) {
            System.out.println("目标元素 " + target + " 在数组中的索引是: " + result);
        } else {
            System.out.println("目标元素 " + target + " 不在数组中。");
        }
    }
}

代码解释:

  1. 方法定义binarySearch 方法接收一个整型数组 arr 和目标元素 target 作为参数。
  2. 初始化指针left 初始化为数组的起始索引 0right 初始化为数组的最后一个元素的索引 arr.length - 1
  3. 循环查找:在 left 小于等于 right 的条件下进行循环,每次计算中间索引 mid
    • 如果中间元素等于目标元素,返回中间索引。
    • 如果中间元素小于目标元素,将 left 指针更新为 mid + 1,缩小查找范围到右半部分。
    • 如果中间元素大于目标元素,将 right 指针更新为 mid - 1,缩小查找范围到左半部分。
  4. 未找到情况:如果循环结束后仍未找到目标元素,返回 -1

使用 Arrays.binarySearch 方法

Arrays 类是 Java 标准库中用于操作数组的工具类,其中的 binarySearch 方法可以方便地实现二分查找。示例代码如下:

 

java

import java.util.Arrays;

public class ArraysBinarySearchExample {
    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9, 11, 13};
        int target = 7;
        int result = Arrays.binarySearch(arr, target);
        if (result >= 0) {
            System.out.println("目标元素 " + target + " 在数组中的索引是: " + result);
        } else {
            System.out.println("目标元素 " + target + " 不在数组中。");
        }
    }
}

代码解释:

  • 方法调用Arrays.binarySearch(arr, target) 方法接收一个数组 arr 和目标元素 target 作为参数。
  • 返回值:如果找到目标元素,返回其在数组中的索引;如果未找到,返回一个负数,该负数是 -(插入点) - 1,其中插入点是目标元素应该插入的位置。

注意事项

  • 数组必须有序:无论是手动实现还是使用 Arrays.binarySearch 方法,数组都必须是有序的,否则二分查找的结果将是不确定的。
  • 查找首次出现位置Arrays.binarySearch 方法只能找到目标元素在数组中的一个位置,如果需要找到目标元素首次出现的位置,需要手动实现二分查找逻辑。

Integer.parseInt() 

  • public static int parseInt(String s):将字符串 s 转换为十进制的 int 类型整数。
  • public static int parseInt(String s, int radix):将字符串 s 按照指定的进制 radix 转换为 int 类型整数。

示例代码

java

public class ParseIntExample {
    public static void main(String[] args) {
        // 使用 parseInt(String s) 方法
        String decimalStr = "123";
        int decimalNum = Integer.parseInt(decimalStr);
        System.out.println("十进制字符串转换结果: " + decimalNum);

        // 使用 parseInt(String s, int radix) 方法
        String binaryStr = "101";
        int binaryNum = Integer.parseInt(binaryStr, 2);
        System.out.println("二进制字符串转换结果: " + binaryNum);

        String hexStr = "FF";
        int hexNum = Integer.parseInt(hexStr, 16);
        System.out.println("十六进制字符串转换结果: " + hexNum);
    }
}

代码解释

  • Integer.parseInt(decimalStr):把字符串 "123" 当作十进制数转换为 int 类型,结果为 123
  • Integer.parseInt(binaryStr, 2):将字符串 "101" 按照二进制规则转换为 int 类型,结果为 5
  • Integer.parseInt(hexStr, 16):把字符串 "FF" 按照十六进制规则转换为 int 类型,结果为 255

参数说明

  • s:要转换的字符串。此字符串必须是合法的数字表示形式,不然会抛出异常。
  • radix:可选参数,指定字符串的进制,取值范围是 2 到 36。若不指定该参数,默认使用十进制。

 toString() 

Java 的基本数据类型都有对应的包装类,如 IntegerDouble 等,这些包装类也重写了 toString() 方法,用于将包装类对象转换为对应的字符串表示。

示例

java

public class Main {
    public static void main(String[] args) {
        Integer num = 123;
        String numStr = num.toString();
        System.out.println(numStr);

        Double d = 3.14;
        String dStr = d.toString();
        System.out.println(dStr);
    }
}

解释

  • Integer 类的 toString() 方法将 Integer 对象转换为对应的十进制字符串,Double 类的 toString() 方法将 Double 对象转换为对应的字符串表示。运行上述代码,输出分别为 123<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值