今天遇到了一个关于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()。
二分查找返回负值的好处看看程序最后那一行就知道了.
分享到:
相关推荐
Java中的binarySearch方法是Java.util.Arrays类提供的一个静态方法,用于在数组中搜索指定的元素。该方法有两个用法,分别是搜索整个数组和搜索指定范围内的元素。 binarySearch(Object[], Object key)方法 该方法...
在Java编程语言中,`binarySearch()`方法是`java.util.Arrays`类的一个静态方法,它采用二分查找算法来高效地在有序数组中查找指定的元素。二分查找是一种在有序数据集合中寻找目标值的算法,其效率远高于线性搜索。...
当使用`Arrays`类进行操作时,确保了解每个方法的要求,比如数组是否需要预先排序(对于`binarySearch`),以及方法返回值的含义(负数通常表示未找到)。 5. **总结** `Arrays`类是Java中一个强大的工具,提供了...
4. Arrays.binarySearch(数组, 目标值) 在有序数组中,查找目标值的位置下标。 5. Arrays.fill(数组, 值) 填满指定的值。 七、二维数组 二维数组是一种特殊的数组,用于存放数组的数组。二维数组的创建有多种方式...
本文主要讨论了如何使用Java标准库中的`Arrays`类的`binarySearch()`方法进行数组查询。 `binarySearch()`方法采用二分搜索算法,这是一种在有序数组中查找特定元素的搜索算法。它的基本思想是每次将搜索区间减半,...
- `Arrays.binarySearch()`:该方法可以在已排序的数组中查找指定元素的位置。如果找到该元素,则返回该元素的索引;如果未找到,则返回负数,表示假设该元素存在于数组中的位置的负数形式。例如: ```java int[]...
此外,Java提供了`java.util.Arrays`类,其中包含许多对数组操作的实用方法,如排序(`sort()`)和搜索(`binarySearch()`)等。例如,我们可以使用`Arrays.sort(scores)`对整型数组进行排序。 生成随机数时,可以...
- 提供一个简化版本的 `binarySearch` 方法,该方法默认从数组的第一个元素到最后一个元素进行查找。 ```java public static <T extends Comparable<? super T>> int binarySearch(T[] value, T key) { return ...
int index = Arrays.binarySearch(scores, targetValue); // 查找元素 ``` #### 六、类与对象 **1. 定义类** - 类是Java中的重要概念,用于定义对象的属性和行为。 - 使用`public class ClassName { ... }`来...
4. **数组操作**:`System.arraycopy()`用于复制数组,`Arrays.sort()`和`binarySearch()`用于排序和查找数组元素。 5. **字符串类**:Java中有`String`和`StringBuffer`两个字符串类,它们都是`java.lang.Object`...
- **二分查找:** `Arrays.binarySearch()` 方法用于在已排序的数组中查找指定元素的位置。 - **答案解析:** 正确答案为 **B. 输出:1**,因为排序后数组为 `{1, 2, 3}`,而 `2` 的索引位置为 1。 ### 6. 分析下面...
16. Java Arrays类方法:`java.util.Arrays`类的`binarySearch`方法用于对已排序的数组进行二元搜索。正确答案是a) binarySearch。 17. WinForms Label控件属性:在WinForms窗体中,`Label`控件的`Text`属性用于...
4. `java.util.Arrays`类:这个类提供了许多实用方法,如`binarySearch`用于在排序后的数组中进行二分查找,返回目标值的索引,找不到则返回负数。 5. 带参数方法:Java中,带参数的方法可以有任意数量的参数,参数...
16)在Java中,`java.util.Arrays`类的(binarySearch)方法用于对已排序的数组进行二元搜索。 - `binarySearch`方法用于在排序数组中查找特定元素。 17)在WinForms窗体中,标签(Label)控件的(Text)属性用于...
3. `java.util.Arrays`类的`binarySearch`方法用于在已排序的数组中查找指定元素的位置,这是Java标准库中处理数组的常见操作。 4. 介绍Java中带参数方法的使用,强调定义和调用过程,指出参数可以是任意类型,包括...
2. **Array类的静态方法**:`Arrays`类提供了多种操作数组的方法,如`binarySearch()`用于二分查找,`copyOf()`用于复制数组,`copyOfRange()`复制指定范围的数组,`equals()`判断两个数组是否相等,`fill()`填充...
16)Java中,`Arrays`类的`binarySearch`方法用于对已排序的数组进行二元搜索,所以答案是a) binarySearch。 这些知识点涵盖了计算机科学的基础部分,包括编程语言的语法、操作系统的应用、网页开发基础以及数据库...