arrays.binarysearch

Arrays.binarySearch() 是 Java 中的一个方法,用于在已排序的数组中查找指定元素的位置。如果找到该元素,则返回元素的索引;如果没有找到,则返回一个负数,表示该元素应该插入的位置。

方法签名

public static int binarySearch(Object[] a, Object key)
  • a:要搜索的数组。

  • key:要搜索的值。

返回值

  • 如果找到元素,则返回元素的索引。

  • 如果未找到元素,则返回一个负数,该负数是应该插入元素的位置。具体来说,返回值是 -(insertion point + 1),其中 insertion point 是第一个大于 key 的元素的索引。

使用示例

以下是一个简单的使用示例:

import java.util.Arrays;

public class BinarySearchExample {
    public static void main(String[] args) {
        int[] arr = {2, 4, 6, 8, 10, 12, 14};
        int key = 10int index = Arrays.binarySearch(arr, key);
        if (index >= 0) {
            System.out.println("元素 " + key + " 位于数组的索引 " + index);
        } else {
            System.out.println("元素 " + key + " 不在数组中");
        }
    }
}

注意事项

  1. 在使用 binarySearch() 方法之前,必须确保数组已经按照升序或降序进行了排序。如果数组未排序,结果是不确定的。

  2. 该方法可以处理对象数组,但要求数组中的对象必须实现 Comparable 接口,或者需要提供一个 Comparator 来定义元素的比较规则。

技巧

  • 如果搜索值不是数组元素,且在数组范围内,从1开始计数,得“ - 插入点索引值”;

  • 如果搜索值是数组元素,从0开始计数,得搜索值的索引值;

  • 如果搜索值不是数组元素,且小于数组内元素,索引值为 – 1;

  • 如果搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1)。

Top