打印出来-1我可能会错过这种情况,因为“德国”绝对是数组
public class A
{
static PrintWriter pw = new PrintWriter(System.out, true);
public static void main(String[] args) throws IOException
{
String[] a = new String[4];
a[0]="India";
a[1]="Italy";
a[2]="Germany";
a[3]="India";
pw.println(Arrays.binarySearch(a, "Germany"));
}
}
答案 0 :(得分:10)
二进制搜索仅适用于已排序的数组。
答案 1 :(得分:7)
二进制搜索需要对数组进行排序(堆)。您可以使用Arrays.sort():
public class A
{
static PrintWriter pw = new PrintWriter(System.out, true);
public static void main(String[] args) throws IOException
{
String[] a = new String[4];
a[0]="India";
a[1]="Italy";
a[2]="Germany";
a[3]="India";
Arrays.sort(a);
pw.println(Arrays.binarySearch(a, "Germany"));
}
}
请注意,这需要元素类型为基本类型,或者适用于Comparable<T>的接口String的强制。
答案 2 :(得分:1)
必须对列表进行排序以使用二进制搜索