Java 对二维数组行排序
我有一个2D数组,我只需要对它的行进行排序,我已经完成了以下代码: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++) {
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();
}