Java 二维数组选择排序

Java 二维数组选择排序,java,multidimensional-array,selection-sort,Java,Multidimensional Array,Selection Sort,我在学校上Java课程。Java对我来说看起来简单但复杂 我在排序二维数组时遇到问题。请帮帮我 这是我编的代码。我不知道为什么它不起作用 public static void selectionSort(int[][] list) { for (int k = 0; k < list.length;k++){ for (int i = 0; i < list[k].length;i++) { int currentMin = list[

我在学校上Java课程。Java对我来说看起来简单但复杂

我在排序二维数组时遇到问题。请帮帮我

这是我编的代码。我不知道为什么它不起作用

public static void selectionSort(int[][] list) {
    for (int k = 0; k < list.length;k++){
        for (int i = 0; i < list[k].length;i++) {
            int currentMin = list[k][i];
            int currentMinIndexRow = k;
            int currentMinIndexColumn = i;

            if (k == 3 && i == 3) continue;

            for (int m = k; m < list.length; m++) {
                for (int j = i; j < list[k].length; j++) {
                    if (m == k && i == j) continue;

                    if (currentMin > list[m][j]) {
                        currentMin = list[m][j];
                        currentMinIndexRow = m;
                        currentMinIndexColumn = j;
                    }
                }
            }        
            if (currentMinIndexRow != k && currentMinIndexColumn != i) {
                list[currentMinIndexRow][currentMinIndexColumn] = list[k][i];
                list[k][i] = currentMin;
            }
        }
    }
}
publicstaticvoidselectionsort(int[]list){
for(int k=0;k列表[m][j]){
currentMin=列表[m][j];
CurrentMiniIndexRow=m;
currentMinIndexColumn=j;
}
}
}        
if(currentMinIndexRow!=k&¤tMinIndexColumn!=i){
列表[currentMinIndexRow][currentMinIndexColumn]=列表[k][i];
列表[k][i]=currentMin;
}
}
}
}
非常感谢你们,伙计们


我试图编写一个程序,提示用户输入两个整数列表,并显示两者是否相同

比如,, “输入列表1:51 25 22 6 1 4 24 54 6 输入列表2:51 22 25 6 1 4 24 54 6 这两个阵列是相同的

输入列表1:51 5 22 6 1 4 24 54 6 输入列表2:51 22 25 6 1 4 24 54 6 这两个数组不相同

这是我写的

public static void main(String[] args) {
    java.util.Scanner input = new java.util.Scanner(System.in);
    int[][] list1 = new int[3][3];
    int[][] list2 = new int[3][3];

    System.out.print("Enter list1: ");
    for (int row=0 ;row < list1.length ;row++){
        for (int column=0;column<list1[row].length; column++){
            list1[row][column] = input.nextInt();
        }
    }
    System.out.print("Enter list2: ");
    for (int row=0 ;row < list2.length ;row++){
        for (int column=0;column<list2[row].length; column++){
            list2[row][column] = input.nextInt();
        }
    }
    selectionSort(list1);
    selectionSort(list2);

    if (equals(list1, list2) == true) 
        System.out.println("The two arrays are identical");
    else
        System.out.println("The two arrays are not identical");

}// void main

public static boolean equals(int[][] m1, int[][] m2){
    boolean result = true;
    for (int row=0 ;row < m1.length ;row++){
        for (int column=0 ;column<m1[row].length ; column++){
            if (m1[row][column] != m2[row][column]) {result = false; break;}
        }
    }
    return result;
}// boolean equals

public static void selectionSort(int[][] list) {

    for(int k = 0; k < list.length;k++){

        for(int i = 0; i < list[k].length;i++) {
            int currentMin = list[k][i];
            int currentMinIndexRow = k;
            int currentMinIndexColumn = i;

            if(k == 3 && i == 3) continue;

            for(int m = k; m < list.length; m++){
                for (int j = i; j < list[k].length; j++) {
                    if (m == k && i == j) continue;

                    if (currentMin > list[m][j]) {
                        currentMin = list[m][j];
                        currentMinIndexRow = m;
                        currentMinIndexColumn = j;
                    }
                }
            }       
                    if (currentMinIndexRow != k && currentMinIndexColumn != i) {
                        list[currentMinIndexRow][currentMinIndexColumn] = list[k][i];
                        list[k][i] = currentMin;
                    }


        }
    }
}
publicstaticvoidmain(字符串[]args){
java.util.Scanner输入=新的java.util.Scanner(System.in);
int[][]list1=新int[3][3];
int[][]list2=新int[3][3];
系统输出打印(“输入列表1:”);
for(int row=0;row对于(int column=0;column非常感谢大家

我明白了为什么我错了

有一个非常简单的错误

if (currentMinIndexRow != k || currentMinIndexColumn != i) {
                        list[currentMinIndexRow][currentMinIndexColumn] = list[k][i];
                        list[k][i] = currentMin;
                    }

上面的代码是我更正的。谢谢。

你必须做得比不知道更好。给出一些问题示例-输入/输出等。添加一些调试语句和有用信息:System.out.println(…);看看它告诉了你什么。对二维数组排序的意思有点不清楚。也许举个例子会有所帮助。我试着把我的问题弄清楚!