Java:交换包含最小值和最大值的2D数组行



我在制作一个函数时遇到了问题,该函数将交换二维数组的行,其中包括最大值和最小值。

我想不出怎样把它变成一个代码。我需要帮助。我试图编辑数组中最小值和最小值的代码,给我最大值和最小数的行索引,但我很困惑,不知道该怎么做。请帮助我如何获得最大值和最大值的数组行索引,以便我可以将其放入行切换功能中。

ANSWER EXAMPLE:
if the array was like this:
5   2  1  8
15 -4  5  18
7   3  44 9
12  1  18 76 
it would swap it like this:
5   2  1  8
12  1  18 76
7   3  44 9
15 -4  5  18
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
{

final int kolonna = (int) (Math.random()*(9-1+1)+1);
final int rinda = (int) (Math.random()*(9-1+1)+1);

int [][] arr = new int [kolonna][rinda];

//fill the grid
for (int rin = 0; rin < arr.length; rin++) {

for (int kol = 0; kol < arr[rin].length; kol++) {

arr[rin][kol] = (int) (Math.random() * 201) - 100;
}
}
print2Dmas(arr);
System.out.println();
int mazs=0;
int liels=0;
for (int i = 0; i < arr.length; i++) {
int rowWithMin = i;
int rowWithMax = i;
for (int j = 0; j < arr[i].length; j++) {
if (rowWithMin > arr[i][j]) {
rowWithMin = i;
mazs = j;
}
if (rowWithMax < arr[i][j]) {
rowWithMax = i;
liels = j;
}
}
if (rowWithMin != rowWithMax){
swapRows(arr, rowWithMin, rowWithMax);}
}
print2Dmas(arr);
}
}   
public static void print2Dmas(int mas[][]) {
for(int i = 0; i < mas.length; i++) {
for(int j = 0; j < mas[i].length; j++) {

System.out.print(mas[i][j] + " ");
//System.out.println();
}
System.out.println();
}
}

public static void swapRows(int array[][], int rowA, int rowB) {
int tmpRow[] = array[rowA];
array[rowA] = array[rowB];
array[rowB] = tmpRow;
}
}

存储具有最小值和最大值的行。试试这个:

import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {

final int kolonna = (int) (Math.random()*(9-1+1)+1);
final int rinda = (int) (Math.random()*(9-1+1)+1);

int [][] arr = new int [kolonna][rinda];

//fill the grid
for (int rin = 0; rin < arr.length; rin++) {
for (int kol = 0; kol < arr[rin].length; kol++) {
arr[rin][kol] = (int) (Math.random() * 201) - 100;
}
}
print2Dmas(arr);
System.out.println();
int rowWithMin = 0;
int rowWithMax = 0;
int minElement = arr[0][0];
int maxElement = arr[0][0];
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) { 
if (minElement > arr[i][j]) {
minElement = arr[i][j];
rowWithMin = i;
}
if (maxElement < arr[i][j]) {
maxElement = arr[i][j];
rowWithMax = i;
}
}
}
if (rowWithMin != rowWithMax){
swapRows(arr, rowWithMin, rowWithMax);
}
print2Dmas(arr);
}

public static void print2Dmas(int mas[][]) {
for(int i = 0; i < mas.length; i++) {
for(int j = 0; j < mas[i].length; j++) {
System.out.print(mas[i][j] + " ");
}
System.out.println();
}
}

public static void swapRows(int array[][], int rowA, int rowB) {
int tmpRow[] = array[rowA];
array[rowA] = array[rowB];
array[rowB] = tmpRow;
}
}

参考:阵列交换-二维阵列

其他示例:双2d阵列java 的行交换

最新更新