【JAVA】数组问题,请高手帮忙解决下我这个新手的疑惑

intarr[]=newint[]{4,25,10};Arrays.sort(arr);intindex=Arrays.binarySearch(arr,0,1,8)为什... int arr[] = new int[]{4,25,10};
Arrays.sort(arr);
int index = Arrays.binarySearch(arr,0,1,8)

为什么index =-2 还有插入点"-"又是什么

这个知识点书上讲得不是很清楚,我想请高手详细的给我讲下这个知识点到底怎么回事
展开
 我来答
百度网友a367ef7
推荐于2016-01-05 · TA获得超过741个赞
知道小有建树答主
回答量:324
采纳率:50%
帮助的人:327万
展开全部
题主代码的插入点为1,arr排序后为{4, 10, 25},key=8,搜索范围为[0,1),在该范围内只有4这一元素,范围中的元素没有任何一个大于8,那么,此时8应当插到范围中的最后一个元素之后,即索引为1的位置,则插入点为1,所以返回结果 = -(1) -1 = -2。

看文档上的解释:

public static int binarySearch(int[] a,
int fromIndex,
int toIndex,
int key)

使用二分搜索法来搜索指定的 int 型数组的范围,以获得指定的值。必须在进行此调用之前对范围进行排序(通过 sort(int[], int, int) 方法)。如果没有对范围进行排序,则结果是不确定的。如果范围包含多个带有指定值的元素,则无法保证找到的是哪一个。

参数:
a - 要搜索的数组
fromIndex - 要搜索的第一个元素的索引(包括)
toIndex - 要搜索的最后一个元素的索引(不包括)
key - 要搜索的值

返回:
如果它包含在数组的指定范围内,则返回搜索键的索引;否则返回 (-(插入点) - 1)。插入点
被定义为将键插入数组的那一点:即范围中第一个大于此键的元素索引,如果范围中的所有元素都小于指定的键,则为 toIndex。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0。
更多追问追答
追问
也就是用这个方法之前必须排序不然就无发正常的使用该方法是吗

指定键就是要搜索的键把,

另外,语法结果是规定如果没有一个是要找的键 返回结果 = -(插入点) -1 =几 是这样吗

还有为什么保证了当且仅当此键被找到时,返回的值将 >= 0。
追答
是的。使用二分搜索必须先排序,不然结果将是不确定的。(-(插入点) - 1) 就是一个加减运算。

至于“为什么保证了当且仅当此键被找到时,返回的值将 >= 0”。这个简单啊,找到要搜索的键了,说明这个键就在数组中了,该方法就返回它的索引值了,索引值当然是 >= 0 的。如果没有找到,方法就返回(-(插入点) - 1) ,而插入点也是索引值,也是 >= 0 的,算下来不就 = 0,否则返回的值将 < 0。”
xuxingxingvip
2015-03-02 · TA获得超过252个赞
知道小有建树答主
回答量:372
采纳率:70%
帮助的人:121万
展开全部

以上是复制的中文api,很明显你的代码中在数组中找8,找不到,所以  " 插入点"  为1,所以你的index的值为-2.

(看明白"插入点"的定义).

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XH就是我
2015-02-26 · TA获得超过475个赞
知道小有建树答主
回答量:466
采纳率:0%
帮助的人:186万
展开全部
Arrays.binarySearch是进行二分查找
binarySearch(object[ ], object key);
如果key在数组中,则返回搜索值的索引;否则返回-1或者"-"(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素索引。
binarySearch(object[ ], int fromIndex, int endIndex, object key);
如果要搜索的元素key在指定的范围内,则返回搜索键的索引;否则返回-1或者"-"(插入点)。
Arrays.binarySearch(arr,0,1,8)的意思是查找范围从数组arr的下标为0的元素开始到下标为1的元素结束,查找8这个数,如果8在arr数组中,返回8的下标;如果没有,返回一个负数。

手头准备一个API文档,不懂的随时查
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式