3

它打印出 -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"));


        }
    }
4

3 回答 3

10

二进制搜索仅适用于已排序的数组。

数组 API

于 2013-01-03T01:31:17.887 回答
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

于 2013-01-03T01:32:19.913 回答
1

必须对列表进行排序才能使用二进制搜索

于 2013-01-03T01:32:52.857 回答