繁体   English   中英

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

[英]How to return a column id that contains minimum value in a 2-D array (Java)

我试图返回包含矩阵中最小值的列的索引,但到目前为止我只能返回矩阵的最小值,并且无法弄清楚如何返回该列的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; 

    }

在您的代码中, 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设置初始值,因此您可以将方法的前几行更改为以下内容,以便更加清晰:

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.
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; 

    }

定义这些变量。

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指向矩阵。 mxn矩阵上, mn分别表示 因此,在m[][]矩阵中, []每一个分别按顺序表示rowcol

如果值62nd row4th col ,那么我们写为

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

如果(min <m [c] [r]){
MIN = [C] [R];
保存= C;
}'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM