gpt4 book ai didi

Java - 按行总和对二维数组进行排序

转载 作者:行者123 更新时间:2023-11-30 07:53:14 25 4
gpt4 key购买 nike

尝试编写一种方法,按照增加行总和的顺序交换二维数组的行。

例如,如果我有以下二维数组:

int [][] array = {4,5,6},{3,4,5},{2,3,4};

我希望它输出一个数组:

{2 3 4}, {3 4 5}, {4 5 6}

方法论:

a.) 对每一行求和并制作一个一维数组

b.) 对 rowSum 数组进行冒泡排序

c.) 根据进行的冒泡排序交换交换原始数组的行

d.) 然后打印新的行排序数组。

到目前为止,这是我的代码:

      public void sortedArrayByRowTot() {
int [][] tempArray2 = new int [salaryArray.length [salaryArray[0].length];

for (int i = 0; i < tempArray2.length; i++) {
for (int j = 0; j < tempArray2[i].length; j++) {
tempArray2[i][j] = salaryArray[i][j];
}
}

int [] rowSums = new int [tempArray2.length];
int sum = 0;
for (int i = 0; i < tempArray2.length; i++) {
for (int j = 0; j < tempArray2[i].length; j++) {
sum += tempArray2[i][j];
}
rowSums[i] = sum;
sum = 0;
}

int temp;
int i = -1;
for(int j = rowSums.length; j > 0; j--){
boolean isSwap = false;
for (i = 1; i < j; i++) {
if(rowSums[i-1] > rowSums[i]) {
temp = rowSums[i-1];
rowSums[i-1] = rowSums[i];
rowSums[i] = temp;
isSwap = true;
}
}

if(!isSwap){
break;
}
}

for (int k = 0; k < tempArray2.length; k++) {
temp = tempArray2[i-1][k];
tempArray2[i-1][k] = tempArray2[i][k];
tempArray2[i][k] = temp;
}

for (int b = 0; b < tempArray2.length; b++) {
for (int c = 0; c < tempArray2[b].length; c++) {
System.out.print(tempArray2[b][c] + " ");
}
}
}
}

不确定我是否正确地完成了我的方法的 c 部分?

它一直说“主线程中的异常 java.lang.ArrayIndexOutOfBoundsException: 2”

最佳答案

正如@shmosel 所说,您可以这样做:

public static void sortedArrayByRowTot() {
int [][] array = {{4,5,6},{3,4,5},{2,3,4}};
Arrays.sort(array, Comparator.comparingInt(a -> IntStream.of(a).sum()));
}

关于Java - 按行总和对二维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com