关于JAVA数组查询

来源:百度知道 编辑:UC知道 时间:2024/06/27 23:51:24
import java.util.Arrays;

public class Getifelse {

public static void main(String[] args)
{
int arr[] = new int[]{1,2,3,5,8,34,67,90};
Arrays.sort(arr);
int index =Arrays.binarySearch(arr,0,5,90);
System.out.println(index);
}
}

对于这段代码。
我要从0-5这个位置搜索在数组中并比0-5里面的数都大的90,
我查到书中“如果范围中的所有元素都小于指定的键,则输出toIndex.”那么不是应该输出-5吗?
但是程序运行后却输出了-6.为什么会这样子。

返回:
如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点 被定义为将键插入数组的那一点:如果范围中的所有元素都小于指定的键,则为 toIndex。

以上摘自jdk-api1.6

插入点被定义为toIndex,所以插入点是5,返回值是(-(插入点) - 1)。
也就是-6

如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回 (-(插入点) - 1)
插入点 被定义为将键插入数组的那一点:即范围中第一个大于此键的元素索引,如果范围中的所有元素都小于指定的键,则为 toIndex。

(引用jdk api的说明)