繁体   English   中英

为什么这个二进制搜索返回-1,即使该元素在数组中

[英]Why does this binary search return -1 even though the element is in the array

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


        }
    }

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

数组API

二进制搜索需要对数组进行排序(堆)。 您可以使用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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM