`
128kj
  • 浏览: 594883 次
  • 来自: ...
社区版块
存档分类
最新评论

你清楚Arrays.binarySearch()方法的返回值吗?

阅读更多
今天遇到了一个关于Arrays.binarySearch()方法的返回值的问题:
下面程序输出什么?
import java.util.*;
public class Quest {
public static void main(String[] args) {
   String[] colors = {"blue","red","green","yellow","orange"};
   Arrays.sort(colors);
   System.out.println("after store: "+Arrays.toString(colors));
   int s2 = Arrays.binarySearch(colors, "orange");
   int s3 = Arrays.binarySearch(colors, "violet");
   System.out.println(s2+" "+s3);

    int[] Prime={3,5,7,11,17,23,31,37,43,47,67,79,89,97,137,163,179,197,277,311,331,
                 359,379,397,433,557,599,631,673,719};
   

    int k=Arrays.binarySearch(Prime,100);
     System.out.println(k);

    //在上面素数表中找一个最接近100的素数(大于),哈哈,只要这样做:
     System.out.println(Prime[-Arrays.binarySearch(Prime,100)-1]);
    
  }
}

正确的答案应该是
2,-5
-15
137

System.out.println("after store: "+Arrays.toString(colors));
以后的输出是:
[blue, green, orange, red, yellow]

所以Arrays.binarySearch(colors, "orage"); 的结果应该是 2

至于int s3 = Arrays.binarySearch(colors, "violet"); 为什么是-5,就要从Arrays.binarySearch() 讨论起了,如果找到了目标,

Arrays.binarySearch() 产生的返回值就要大于或等于0。否则,它产生负返回值,表示若要保持数组的排序状态此元素所应该插入的

位置。这个负值的计算方式是:
-(插入点)-1
“插入点”是指,第一个大于查找对象的元素在数组中的位置,如果数组中所有的元素值都小于要查找的对象,“插入点”就等于

Arrays.size()。

二分查找返回负值的好处看看程序最后那一行就知道了.
0
0
分享到:
评论

相关推荐

    Java binarysearch方法原理详解

    Java中的binarySearch方法是Java.util.Arrays类提供的一个静态方法,用于在数组中搜索指定的元素。该方法有两个用法,分别是搜索整个数组和搜索指定范围内的元素。 binarySearch(Object[], Object key)方法 该方法...

    Java.binarySearch.docx

    在Java编程语言中,`binarySearch()`方法是`java.util.Arrays`类的一个静态方法,它采用二分查找算法来高效地在有序数组中查找指定的元素。二分查找是一种在有序数据集合中寻找目标值的算法,其效率远高于线性搜索。...

    java中的Arrays这个工具类你真的会用吗(一文秒懂)

    当使用`Arrays`类进行操作时,确保了解每个方法的要求,比如数组是否需要预先排序(对于`binarySearch`),以及方法返回值的含义(负数通常表示未找到)。 5. **总结** `Arrays`类是Java中一个强大的工具,提供了...

    Java基础复习day03数组

    4. Arrays.binarySearch(数组, 目标值) 在有序数组中,查找目标值的位置下标。 5. Arrays.fill(数组, 值) 填满指定的值。 七、二维数组 二维数组是一种特殊的数组,用于存放数组的数组。二维数组的创建有多种方式...

    关于Java数组查询的相关问题及实例 <font color=red>原创</font>

    本文主要讨论了如何使用Java标准库中的`Arrays`类的`binarySearch()`方法进行数组查询。 `binarySearch()`方法采用二分搜索算法,这是一种在有序数组中查找特定元素的搜索算法。它的基本思想是每次将搜索区间减半,...

    SCJP对应知识考察 -编辑版.docx

    - `Arrays.binarySearch()`:该方法可以在已排序的数组中查找指定元素的位置。如果找到该元素,则返回该元素的索引;如果未找到,则返回负数,表示假设该元素存在于数组中的位置的负数形式。例如: ```java int[]...

    Java方法与数组(2).pdf

    此外,Java提供了`java.util.Arrays`类,其中包含许多对数组操作的实用方法,如排序(`sort()`)和搜索(`binarySearch()`)等。例如,我们可以使用`Arrays.sort(scores)`对整型数组进行排序。 生成随机数时,可以...

    写出二分法查找算法函数实现。

    - 提供一个简化版本的 `binarySearch` 方法,该方法默认从数组的第一个元素到最后一个元素进行查找。 ```java public static &lt;T extends Comparable&lt;? super T&gt;&gt; int binarySearch(T[] value, T key) { return ...

    java基础知识总结

    int index = Arrays.binarySearch(scores, targetValue); // 查找元素 ``` #### 六、类与对象 **1. 定义类** - 类是Java中的重要概念,用于定义对象的属性和行为。 - 使用`public class ClassName { ... }`来...

    考试酷java 第四章.pdf

    4. **数组操作**:`System.arraycopy()`用于复制数组,`Arrays.sort()`和`binarySearch()`用于排序和查找数组元素。 5. **字符串类**:Java中有`String`和`StringBuffer`两个字符串类,它们都是`java.lang.Object`...

    JAVA阶段模拟试题

    - **二分查找:** `Arrays.binarySearch()` 方法用于在已排序的数组中查找指定元素的位置。 - **答案解析:** 正确答案为 **B. 输出:1**,因为排序后数组为 `{1, 2, 3}`,而 `2` 的索引位置为 1。 ### 6. 分析下面...

    accp5.0 s1 2008-8

    16. Java Arrays类方法:`java.util.Arrays`类的`binarySearch`方法用于对已排序的数组进行二元搜索。正确答案是a) binarySearch。 17. WinForms Label控件属性:在WinForms窗体中,`Label`控件的`Text`属性用于...

    Java总复习测试2.doc

    4. `java.util.Arrays`类:这个类提供了许多实用方法,如`binarySearch`用于在排序后的数组中进行二分查找,返回目标值的索引,找不到则返回负数。 5. 带参数方法:Java中,带参数的方法可以有任意数量的参数,参数...

    5.0s12008-8t.doc

    16)在Java中,`java.util.Arrays`类的(binarySearch)方法用于对已排序的数组进行二元搜索。 - `binarySearch`方法用于在排序数组中查找特定元素。 17)在WinForms窗体中,标签(Label)控件的(Text)属性用于...

    2018青鸟学社纳新笔试题.docx

    3. `java.util.Arrays`类的`binarySearch`方法用于在已排序的数组中查找指定元素的位置,这是Java标准库中处理数组的常见操作。 4. 介绍Java中带参数方法的使用,强调定义和调用过程,指出参数可以是任意类型,包括...

    个人整理Java学习资料

    2. **Array类的静态方法**:`Arrays`类提供了多种操作数组的方法,如`binarySearch()`用于二分查找,`copyOf()`用于复制数组,`copyOfRange()`复制指定范围的数组,`equals()`判断两个数组是否相等,`fill()`填充...

    S1结业笔试题8.doc

    16)Java中,`Arrays`类的`binarySearch`方法用于对已排序的数组进行二元搜索,所以答案是a) binarySearch。 这些知识点涵盖了计算机科学的基础部分,包括编程语言的语法、操作系统的应用、网页开发基础以及数据库...

    北大青鸟08年笔试试卷(一)

    16. **Java中的二元搜索**:在Java的`java.util.Arrays`类中,`binarySearch`方法用于对已排序的数组进行二元搜索。 以上就是试卷中的主要知识点详解,涵盖了编程语言基础、Web开发、数据库管理和操作系统等多个...

Global site tag (gtag.js) - Google Analytics