Java 对二维数组行排序

Java 对二维数组行排序,java,arrays,Java,Arrays,我有一个2D数组,我只需要对它的行进行排序,我已经完成了以下代码: double[][] arr = initArray(); for (int row = 0; row < arr.length; row++) { int index = row; double minVal = arr[row][0]; for (int column = 0; column < arr[row].length; column++) {

我有一个2D数组,我只需要对它的行进行排序,我已经完成了以下代码:

double[][] arr = initArray();

    for (int row = 0; row < arr.length; row++) {
        int index = row;
        double minVal = arr[row][0];
        for (int column = 0; column < arr[row].length; column++) {

            if (arr[row][column] < minVal) {
                minVal = arr[row][column];
                index = column;
            }

        }


        arr[row][index] = arr[row][0];
        arr[row][0] = minVal;

    }
预期产出:

0.15 0.375 0.875 
0.005 0.225 0.55 
0.12 0.3 0.4
我得到的是:

0.15 0.875 0.375 
0.005 0.55 0.225 
0.12 0.3 0.4

正如@Pshemo所提到的,您并没有经历所有的价值观,这里有一个问题:

 for (int row = 0; row < arr.length; row++) {
        for (int column = 0; column < arr.length - 1; column++) {
            double min = arr[row][column];
            int index = column;
            for (int j = column + 1; j < arr.length; j++) {
                if (min > arr[row][j]) {
                    min = arr[row][j];
                    index = j;
                }
            }
            if (index != column) {
                arr[row][index] = arr[row][column];
                arr[row][column] = min;
            }
        }
    }
for(int row=0;row阵列[行][j]){
min=arr[行][j];
指数=j;
}
}
如果(索引!=列){
arr[行][索引]=arr[行][列];
arr[行][列]=min;
}
}
}
for(int column=0;column

您的代码每行运行一次,因此它只查找最小的代码并转移到第一个位置。您只需确保同一操作发生的次数与行中有ar项的次数相同。请在此处查找参考

您可以使用array.sort();函数从java.util.Arrays类对2d数组中的每一行进行排序

 for (double[] innerArray: outerArray) {
     Arrays.sort(innerArray);
 }
编辑:以下是整个示例:

double[][] outerArray = {
     {
         0.15,
         0.875,
         0.375
     },
     {
         0.55,
         0.005,
         0.225
     },
     {
         0.30,
         0.12,
         0.4
     }
 };


 for (double[] innerArray: outerArray) {
     Arrays.sort(innerArray);
 }


 for (int i = 0; i < outerArray.length; i++) {

     for (int j = 0; j < outerArray.length; j++) {

         System.out.print(outerArray[i][j] + " ");

     }
     System.out.println();

 }
double[]outerArray={
{
0.15,
0.875,
0.375
},
{
0.55,
0.005,
0.225
},
{
0.30,
0.12,
0.4
}
};
for(双[]内部数组:外部数组){
排序(innerArray);
}
for(int i=0;i
2d数组是数组的数组
{{{…},{…},{…}
。您当前的代码不会对内部数组进行排序,而是在每行中搜索最小值,并将其移动到该行的开头。试着想办法对1d数组进行排序,然后将其应用到每一行。@Pshemo谢谢你指出这一点。@jontro谢谢你指出这一点,但这不是重复,我说的是
。不幸的是,这行不通,我只需要行。好的。我发布了完整的代码,你可以自己查看结果。是的,我向你投了赞成票,谢谢。
 for (double[] innerArray: outerArray) {
     Arrays.sort(innerArray);
 }
double[][] outerArray = {
     {
         0.15,
         0.875,
         0.375
     },
     {
         0.55,
         0.005,
         0.225
     },
     {
         0.30,
         0.12,
         0.4
     }
 };


 for (double[] innerArray: outerArray) {
     Arrays.sort(innerArray);
 }


 for (int i = 0; i < outerArray.length; i++) {

     for (int j = 0; j < outerArray.length; j++) {

         System.out.print(outerArray[i][j] + " ");

     }
     System.out.println();

 }