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"));


    }
}

これには、要素の型がプリミティブ型であるか、Stringに適用されるインターフェイスComparable<T>の実装である必要があることに注意してください。

于 2013-01-03T01:32:19.913 に答える
1

二分探索を使用するには、リストをソートする必要があります

于 2013-01-03T01:32:52.857 に答える