交换二维数组中的最大值和最小值

3

我正在尝试交换数组的最小值和最大值。

我的代码:

public static void swap(int[][] a, int i0, int j0, int i1, int j1) {
    int temp = a[i0][j0];
    a[i0][j0] = a[i1][j1];
    a[i1][j1] = temp;
  }
public static void main(String args[]){
    int max = 0, min = 0, tmpI = 0, tmpJ = 0, tmpI1 = 0, tmpJ1 = 0;
    int[][] a = {{10,9,20} , {2,10,10}};
    for (int i = 0; i < a.length; i++) {
        for (int j = 0; j < a[i].length; j++) { 
            if (min > a[i][j]) {
                min = a[i][j];
                tmpI1 = i; tmpJ1 = j;
            }
            if (max < a[i][j]) {
                max = a[i][j];
                tmpI = i; tmpJ = j;
            }
        }
    }
    System.out.println(Arrays.deepToString(a));
    swap(a,tmpI1,tmpJ1,tmpI,tmpJ);
    System.out.println(Arrays.deepToString(a));
}

输出:

[[10, 9, 20], [2, 10, 10]]
[[20, 9, 10], [2, 10, 10]]

它似乎只能切换到第一个数字。需要帮助吗?我是Java新手。

2
min的初始值从0更改为Integer.MAX_VALUE - Elliott Frisch
谢谢!它是有效的。我知道一定是某些小问题。 - Austin DiMarzio
1个回答

0
问题出在您的初始值 min0)上。当您这样说时,

if (min > a[i][j]) {

这将永远不会成立(因为0小于你的数字)。将min的声明更改为类似以下内容:

min = Integer.MAX_VALUE

因为每个 int 值都会小于它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接