数组查询Arrays类的binarySearch()方法详解

来源:互联网 发布:零点有数 知乎 编辑:程序博客网 时间:2024/06/06 00:31

Arrays类的binarySearch()方法,可以使用二分搜索法来搜索指定的数组,以获得指定对象。该方法返回要搜索元素的索引值。binarySearch()方法提供多种重载形式,用于满足各种类型数组的查找需要。


1)  binarySearch(Object[], Object key)

a: 要搜索的数组

key:要搜索的值

如果key在数组中,则返回搜索值的索引;否则返回-1或“-”(插入点)。插入点是索引键将要插入数组的那一点,即第一个大于该键的元素的索引。

技巧:

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

[2] 搜索值是数组元素,从0开始计数,得搜索值的索引值;

[3] 搜索值不是数组元素,且大于数组内元素,索引值为 – (length + 1);

[4] 搜索值不是数组元素,且小于数组内元素,索引值为 – 1。

 

程序:

       int arr [] =newint[]{1,3,4,5,8,9};

        Arrays.sort(arr);

       int index1 = Arrays.binarySearch(arr,6);

       int index2 = Arrays.binarySearch(arr,4);

       int index3 = Arrays.binarySearch(arr,0);

       int index4 = Arrays.binarySearch(arr,10);

        System.out.println("index1 = "+ index1 +", index2 = " + index2 +

                        ", index3 = " + index3 +", index4 = "+ index4);

结果:index1= -5, index2 = 2, index3 = -1, index4 = -7












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

a:要搜索的数组

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

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

key:要搜索的值

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

技巧:

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

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

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

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

程序:

        int arr [] =newint[]{1,3,4,5,8,9};

        System.out.println(arr.length+1);

        Arrays.sort(arr);

       int index5 = Arrays.binarySearch(arr,1, 4, 6);

       int index6 = Arrays.binarySearch(arr,1, 4, 4);

       int index7 = Arrays.binarySearch(arr,1, 4 ,2);

       int index8 = Arrays.binarySearch(arr,1, 3, 10);

       int index9 = Arrays.binarySearch(arr,1, 3, 0);

        System.out.println("index5 = "+ index5 +", index6 = " + index6 +

                        ", index7 = " + index7 +", index8 = "+ index8 +

                     ", index9 = " + index9);

结果:index5 = -5, index6 = 2,index7 = -2, index8 = -4, index9 = -2















阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 不愿意理你的人就别去打扰 不去打扰一个不想理你的人 不理解 不理解图片 数学应用题不理解怎么办 小时候一直不理解的事 不生娃的原因 不能生娃怎么办 妈给你生娃 娘亲给我生个娃 一不小心生了个萌娃 生娃报喜朋友圈 猎户捡个娘子生娃 不生气图片 不要生气不要生气生气给魔鬼 别人生气我不气 不要生气歌 不生气的智慧 不生气的句子 不要生气图片 不生气歌 下不为例先生别生气 不生气的顺口溜 我再也不会对你生气 不生气的秘密 别人生气我不气七字经 不要生气表情包 我不生气 不会生气 生气句子 生气歌 男朋友生气不理我 生气了哄不好的那种表情包 怎么样才能不生气 怎么能不生气 怎样才能不生气 怎么才能不生气 如何不生气 怎样做到不生气 怎样不生气 我好生气