我有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.875, 0.375},
{0.55, 0.005, 0.225},
{0.30, 0.12, 0.4}}
期待出局:
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
答案 0 :(得分:1)
您可以使用Arrays.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();
}
答案 1 :(得分:0)
正如@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;
}
}
}
答案 2 :(得分:0)
for (int column = 0; column < arr[row].length; column++) {
//**insert another for loop here**
if (arr[row][column] < minVal) {
minVal = arr[row][column];
index = column;
}
}
您的代码每行运行一次,因此它只找到最小的并转移到第一个位置。您只需要确保相同的操作发生的次数与行中的项目一样多。请在此处查看参考Bubble Sort