Java:Arrays.binarySearch方法

Java中如果你想在一个数组中去查找一个数值的位置,你可以去写for循环,但是Java中的Arrays类明明提供了一个方法,那么为何不用呢?

Arrays.binarySearch方法

Arrays.binarySearch(array, value);
Arrays.binarySearch(array, from_index, to_index, value);

这里Arrays.binarySearch方法中的数组array必须是从小到大排好序的,这点务必注意,因为其实这个方法是用二分算法实现的。如果你的数组并不是有序的,请先调用Arrays.sort方法对其进行排序,再去二分查找。

这里先说第一行的方法,就是在array数组中去找寻value值最后一次出现所在的索引位置。而如果array数组中根本没有value这个值,会返回一个负数。

再说第二个方法,其实就是加了个搜索的范围,即在array[from_index] ~ array[to_index - 1]中去找寻value值最后一次出现的索引位置,没有找到的话会返回一个负数。这里务必注意,范围是不包含array[to_index]的。

还有一点差点忘了说了,这里得提前导入Arrays类,即在开头写如下代码

import java.utl.Arrays;

代码

package base;
import java.util.Arrays;

public class Arrays_binarySearch
{
    public static void main(String[] args)
    {
        int a[] = {0, 1, 1, 3, 3, 4, 4, 4, 6, 8}; // 这里a数组必须是有序的,否则无法使用binarySearch。
        System.out.println(Arrays.binarySearch(a, 4));
        System.out.println(Arrays.binarySearch(a, 5));
        System.out.println(Arrays.binarySearch(a, 2, 5 + 1, 3));
        System.out.println(Arrays.binarySearch(a, 2, 5 + 1, 8));
    }
}

猜你喜欢

转载自www.cnblogs.com/000zwx000/p/12461338.html
今日推荐