java - 需要帮助 Java 中的 multiD 冒泡排序

标签 java bubble-sort

我想对多维字符串数组进行冒泡排序,但似乎不起作用

public class Array {
    public static void main( final String args[] ) {
        final String[][] arrDataIn = 
        {
            { "abc", "9", "5" },
            { "xyz", "3", "4" },
            { "lmn", "7", "3" },
            { "hij", "1", "3" }
        };

        final Array bs = new Array();

        final String arrSorted[][] = bs.sort( arrDataIn, 0, 1 );
        for ( int y = 0; y < arrSorted.length; y++ ) {
            System.out.println( "Printing Row Number :" + y );

            for ( int z = 0; z < arrSorted[y].length; z++ )
                System.out.println( "Value : " + arrSorted[y][z] );
        }
    }

    public String[][] sort( final String arrDataIn[][], final int iCol, final int iOrder ) {
        final String arrTmp[] = new String[ arrDataIn[0].length ];

        for ( int z = 0; z < arrDataIn.length; z++ ) {
            for ( int i = 0; i < arrDataIn.length - ( z + 1 ); i++ ) {
                if ( arrDataIn[i].compareTo( arrDataIn[i + 1] ) < 0 ) {
                    for ( int j = 0; j < arrDataIn[i].length; j++ ) {
                        arrTmp[j] = arrDataIn[i][j];
                        arrDataIn[i][j] = arrDataIn[i + 1][j];
                    }

                    for ( int m = 0; m < arrTmp.length; m++ )
                        arrDataIn[i + 1][m] = arrTmp[m];
                } else if ( arrDataIn[i].compareTo( arrDataIn[i + 1] ) < 0 ) {
                    for ( int j = 0; j < arrDataIn[i].length; j++ ) {
                        arrTmp[j] = arrDataIn[i][j];
                        arrDataIn[i][j] = arrDataIn[i + 1][j];
                    }

                    for ( int m = 0; m < arrTmp.length; m++ )
                        arrDataIn[i + 1][m] = arrTmp[m];
                }
            }

        }

        return arrDataIn;
    }
}

输出错误显示:

error: cannot find symbol
if (arrDataIn[i].compareTo(arrDataIn[i+1])<0)
                ^
  symbol:   method compareTo(String[])
  location: class String[]
error: cannot find symbol
else if (arrDataIn[i].compareTo(arrDataIn[i+1])<0)
                     ^
  symbol:   method compareTo(String[])
  location: class String[]

我尝试将其更改为:

if (arrDataIn[i][iCol] > arrDataIn[i+1][iCol] && (iOrder == 0))

else if (arrDataIn[i][iCol] < arrDataIn[i+1][iCol] && (iOrder == 1))

还是同样的错误

最佳答案

arrDataIn[i] 是一个字符串数组,数组对象上没有 compareTo() 方法

首先你要清楚自己想做什么。也许您想对数组 lexicographically 进行排序

from:
  {
    { "2", "4", "5" }, // if possible
    { "3", "1" },
    { "2", "4" }
  }
to:
  {
    { "2", "4" },
    { "2", "4", "5" },
    { "3", "1" }
  }

你只需要根据 compareTo() description 实现 compareTo( String[] sa1, String[] sa2 ) 方法.

关于java - 需要帮助 Java 中的 multiD 冒泡排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10312420/

相关文章:

python - Python 中的冒泡排序排序不正确

c++ - 列表上的冒泡排序——在计算上花费了太多时间

c - 按字母顺序对单词列表进行冒泡排序。我有一个指向每个单词的指针数组

c - 冒泡排序在c中不能正确排序数组

java - 在 Android aar 中包含带有 Java 源代码的 jar 文件

java - 使用双显示器(扩展屏幕)时,应用程序 UI 出现在错误的屏幕上

java - 使用 vertx-config 异步加载配置文件

java - 我如何在 Java 中转换这个日期?

java - 有什么方法可以使用 Apache POI 读取 .xls 和 .xlsx 文件吗?