阵列的工作结构。 java中的binarySearch()方法

Posted

技术标签:

【中文标题】阵列的工作结构。 java中的binarySearch()方法【英文标题】:Working Sturcture of Arrays. binarySearch() method in java 【发布时间】:2019-05-18 16:17:33 【问题描述】:

我正在尝试解决字符串中的问题,在字符串中查找匹配的字符。 我使用字符数组和内部循环来解决它,但我认为它的时间复杂度更高。所以尝试在数组二进制搜索中解决它,但它给出了不合适的结果。我想要java中二进制搜索方法的工作结构。

我在字符串二中设置了匹配值来复制字符'#',因为不想匹配另一个字符。

public static void main(String[] args) 

        Scanner s= new Scanner(System.in);


        String team1 = s.next();
        String team2 = s.next();

        char[] teamA = team1.toCharArray();
        char[] teamB = team2.toCharArray();

        Arrays.sort(teamB);

        int count = 0;
        for(int a=0;a< teamA.length;a++) 
            int index = Arrays.binarySearch(teamB, teamA[a]);

            if(index >= 0) 
                count++;
                teamB[index] = '#';
            
        
        System.out.println(count);
    

如果我输入两个字符串 "aabc" 和 "zbaa" 预期输出为 3 但我的程序给出了输出 2。

【问题讨论】:

【参考方案1】:

问题在于,一旦您在循环中更新了teamB 数组,该数组就不再排序。而在未排序的数组中,二分查找会给出意想不到的输出。

【讨论】:

谢谢,二分查找仅在数组排序后才有效。

以上是关于阵列的工作结构。 java中的binarySearch()方法的主要内容,如果未能解决你的问题,请参考以下文章

用于矢量化的随机读取上的结构阵列 (AoS) 与阵列结构 (SoA)

光线投射和二维阵列在 Unity 中的魔方无法按预期工作

matlab中结构体和cell的区别

java 532.阵列中的K-diff对(第1个).java

java 532.阵列中的K-diff对(第1个).java

java 532.阵列中的K-diff对(第1个).java