如何在二维数组(Java)中返回包含最小值的列标识

时间:2014-03-16 11:25:51

标签: java arrays multidimensional-array

我试图返回包含矩阵中最小值的列的索引,但到目前为止我只能返回矩阵的最小值,并且无法弄清楚如何返回该列的id。如果我尝试返回“col”,它不会改变任何东西。

public static int minColIndex (int[][] m) {

        int row = m.length, col = m[0].length; 
        int min = m[0][0]; 
        for (col = 0; col < m.length; col++) {
            for (row = 0; row < m[col].length; row++) {
                if (min > m[col][row]) {
                    min = m[col][row];
                }
            }
        }
        return min; 

    }

4 个答案:

答案 0 :(得分:3)

在您的代码中,外部循环完成后,col的值始终为m.length - 1。您需要将最小列存储在某处,例如,

public static int minColIndex (int[][] m) {

    int row = m.length, col = m[0].length; 
    int min = m[0][0]; 
    int minCol = 0; // extra variable to store minimumm column
    for (col = 0; col < m.length; col++) {
        for (row = 0; row < m[col].length; row++) {
            if (min > m[col][row]) {
                min = m[col][row];
                minCol = col; // remember the minimum column as well as minimum
            }
        }
    }
    return minCol; // return minimum column, not col

}

rowcol也不需要在循环之前设置初始值,因此您可以将方法的前几行更改为以下内容,以便更加清晰:< / p>

public static int minColIndex (int[][] m) {
    int min = m[0][0]; 
    int minCol = 0; // extra variable to store minimumm column
    for (int col = 0; col < m.length; col++) {
        for (int row = 0; row < m[col].length; row++) {

        ... etc.

答案 1 :(得分:0)

public static int minColIndex (int[][] m) {
        int row = m.length, col = m[0].length , int index = 0; 
        int min = m[0][0]; 
        for (col = 0; col < m.length; col++) {
            for (row = 0; row < m[col].length; row++) {
                if (min > m[col][row]) {
                    min = m[col][row];
                    index= col;
                }
            }
        }
        return index; 

    }

答案 2 :(得分:0)

定义这些变量。

int rowOfMinValue = 0;
int colOfMinValue = 0;

然后,

更改:

if (min > m[col][row]) {
    min = m[col][row];
}

致:

if (min > m[col][row]) {
    min = m[col][row];

    rowOfMinValue = row;
    colOfMinValue = col;
}

现在,您手中有最小值行和列。

<强>建议: 您错误地将rowcol指向矩阵。在m x n矩阵上,mn分别代表。因此,在m[][]矩阵中,[]中的每一个分别按顺序表示rowcol

如果值6位于2nd row4th col,那么我们写为

row=1; 
col=3; 
value = 6; 
m[ row ][ col ] = value;

答案 3 :(得分:0)

If(min MIN = [C] [R];
保存= C;
}&#39;