use*_*010 1 java arrays binary-search
希望有人知道这个Java认证问题的答案:
public static void main(String[] args) {
String[] sa = {"d", "c", "a", "b" };
int x = Arrays.binarySearch(sa, "b");
Arrays.sort(sa);
int y = Arrays.binarySearch(sa, "b");
System.out.println(x + " " + y);
}
Run Code Online (Sandbox Code Playgroud)
哪两个结果可能?(选择两项.)
A)7 0
B)7 1
C)7 3
D)-1 0
E)-1 1
F)-1 3
唯一真正的答案是E)-1 1,因为如果你玩二进制搜索算法,这是唯一可能的输出.但他们希望我选择两个...所以第二个必须是B)7 1然后,因为排序数组中的第二个二进制搜索将始终返回1.
所以我的问题是,为什么B)7 1可能的结果?更具体:如何可能,未排序数组中的第一个二进制搜索返回7?
提前致谢
这是一个棘手的问题.根据文档,未排序的数组上的二进制搜索结果是未定义的:
在进行此调用之前,必须对数组进行排序(如上面的排序方法).如果未排序,则结果未定义.
这尤其意味着包括七个在内的任何数字都是合理的游戏.
排序后的结果是明确定义的:你会得到一个1.就像被施了魔法一样,只有两对结束1的答案就行了,所以B和E是考官希望你做出的选择.
| 归档时间: |
|
| 查看次数: |
6528 次 |
| 最近记录: |