已有101人关注
6.4.5数据查询 例6.17
发表在Java图书答疑 2018-01-30 悬赏:1 学分 《Java从入门到精通(第4版)》第6章 数组 118页-118页
是否精华
版块置顶:

int arr[]=new int[] {4,25,10};

        Arrays.sort(arr);

        int index=Arrays.binarySearch(arr, 0,1,8);

        System.out.println(index);

上面的代码中的变量index的值是元素“8”在数组arr中索引在0~1内的索引位置。由于在指定范围内并不存在元素“8”,index的值是“-”(插入点)。如果对数组进行排序,元素“8”应该在“25”的前面,因此插入点应该是元素“25”的索引值2,所以index的值是-2。

如果数组中的所有元素都小于指定的键,则为a.length(注意,这保证了当且仅当此键被找到时,返回的值将大于等于0)。

    我的疑问:数组排序后变成{4,10,25}那元素“8”应该在“10”的前面才对啊?排序后0~1的索引位置不是在4,10之间吗?我把“8”换成比25更大的数后,输出的值为什么还是-2?a.length的值不应该是3吗?求老师解惑!

分享到:
精彩评论 2
David
学分:914 LV7
TA的每日心情
最后的冲刺
2017-07-15 10:46:08
2018-01-31
沙发

binarySearch(Object[] a, int fromIndex, int toIndex, Object key)

a:要搜索的数组;

fromIndex:指定范围的开始处索引(包含);

toIndex:指定范围的结束处索引(不包含);

key:要搜索的值。

如果要搜索的元素key在指定的范围内,则返回搜索值的索引;否则返回-1或“-”(插入点)。

技巧:

[1] 该搜索键在范围内,但不是数组元素,由1开始计数,得“ - 插入点索引值”;

[2] 该搜索键在范围内,且是数组元素,由0开始计数,得搜索值的索引值;

[3] 该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromIndex + 1);

[4] 该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toIndex + 1)。


fire456789
学分:16 LV2
2018-02-03
板凳

David 发表于2018-01-31 14:41

binarySearch(Object[] a, int fromIndex, int toIndex, Object key)

a:要搜索的数组;

fromIndex:指定范围的开始处索引(包含);

toIndex:指定范围的结束处索引(不包含);

key:要搜索的值。

如果要搜索的元素key在指定的范围内,则返回搜索值的索引;否则返回-1或“-”(插入点)。

技巧:

[1] 该搜索键在范围内,但不是数组元素,由1开始计数,得“ - 插入点索引值”;

[2] 该搜索键在范围内,且是数组元素,由0开始计数,得搜索值的索引值;

[3] 该搜索键不在范围内,且小于范围(数组)内元素,返回–(fromIndex + 1);

[4] 该搜索键不在范围内,且大于范围(数组)内元素,返回 –(toIndex + 1)。


多谢老师解惑

首页上一页 1 下一页尾页 2 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照