簡體   English   中英

如何獲得二維數組中的最小值

[英]how to get minimum in 2d array java

我需要幫助! 我正在構建以下代碼以提取距離的每一列的最小值

我試圖計算代碼,但無濟於事

public static void main(String[] args) {
    int data[] = {2, 4, -10, 12, 3, 20, 30, 11};//,25,17,23};    // initial data
    int noofclusters = 3;
    int centroid[][] = new int[][]{
            {0, 0, 0},
            {2, 4, 30}
    };
    getCentroid(data, noofclusters, centroid);
}

public static int[][] getCentroid(int[] data, int noofclusters, int[][] centroid) {

    int distance[][] = new int[noofclusters][data.length];
    int cluster[] = new int[data.length];
    int clusternodecount[] = new int[noofclusters];


    centroid[0] = centroid[1];
    centroid[1] = new int[]{0, 0, 0};
    System.out.println("========== Starting to get new centroid =========");

    for (int i = 0; i < noofclusters; i++) {
        for (int j = 0; j < data.length; j++) {
            //System.out.println(distance[i][j]+"("+i+","+j+")="+data[j]+"("+j+")-"+centroid[0][i]+"="+(data[j]-centroid[0][i]));
            distance[i][j] = Math.abs(data[j] - centroid[0][i]);
            System.out.print(distance[i][j] + " ,");
        }
        System.out.println();
    }

    int[] result = new int[distance.length];
        for (int i = 0; i < distance.length; i++) {
            //int min = distance;
            int min = distance[i][0];
            for (int j = 0; j < distance[0].length; j++) {

                if (distance[i][j] < min) {
                    min = distance[i][j];
                }

                result[j] = min;
                System.out.println(result[j] + ", ");
            }

        }
        return result;
    }
}

距離的計算結果給出

 row 1: 0 ,2 ,12 ,10, 1 ,18 ,28 ,9 row 2: 2 ,0 ,14 ,8 , 1 ,16 ,26 ,7 row 3: 28,26,40 ,18, 27 ,10 ,0 ,19 

我想遍歷每一列以獲得最小值

0 0 12 8 1 10 0 7

謝謝您的幫助

要獲得每列中的最小值,首先,需要在外循環中迭代該列。 這樣,我們可以按色訪問矩陣。

將每列的第一個值分配給一個變量。 然后迭代內部循環中的行。

檢查當前值是否小於最小值。 如果是這樣,則將最小值分配給最小值。

當我們使用數組時,我們得到列的最小值的數組。

要獲得每一行的min[i] ,請交換循環並使用min[i]

下面是一個示例代碼:

int []min = new int[column_lenght];
for(int j = 0; j < column_length; j++) {
    min[j] = array[i][j];
    for(int i = 0; i < row_length; i++) {
        if(array[i][j] < min[j]) {
            min[j] = array[i][j];
        }
    }
}

min[]將包含每列的最小值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM