简体   繁体   中英

Find index of minimum value in each row in 2D Array in java

I need to get the index of the minimum value in each row in my 2D array (array [][]) in Java. MY array holds several floats I'm a beginner, so please don't hate me and help me. Thanks!

void findMinimumIndex( float[][] data )
{
    int x = 0 , y = 0;
    float assumedMin = 0.0f;
    int lastSmallestXIndex , lastSmallestYIndex;
    ArrayList<Integer> minIndexListInRows = new ArrayList<>();
    for( x = 0; x < data.length; x++ )
    {
         for( y = 1 , assumedMin = data[x][y - 1]; y < data[x].length; y++ )
         {
             if( assumedMin < data[x][y] )
             {
                 assumedMin = data[x][y];
                 lastSmallestXIndex = x;
                 lastSmallestYIndex = y; 
             }  
         }
         System.out.println("In (" + x + "," + y + "), smallest float is: " + assumedMin + ", At: {" + lastSmallestXIndex + "," + lastSmallestYIndex + "}");
    }
}

minIndexListInRows, is where you can apply your tricks to to atleast play your part, this code area is your smoking gun;

         for( y = 1 , assumedMin = data[x][y - 1]; y < data[x].length; y++ )
         {
             if( assumedMin < data[x][y] )
             {
                 assumedMin = data[x][y];
                 lastSmallestXIndex = x;
                 lastSmallestYIndex = y; 
             }  
         }

You could use an auxiliary method rowMinsIndex where you pass in in your two dimensional array like so:

import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    int[][] twoDimensionalArray = new int[][]{
      { 1, 2, 5 },
      { 4, 3, 6 },
      { 7, 5, 9 }
    };

    System.out.println("The twoDimensionalArray is: " + Arrays.deepToString(twoDimensionalArray));
    int[] minsOfEachRow = rowMinsIndex(twoDimensionalArray);
    for(int i = 0; i < minsOfEachRow.length; i++) {
      System.out.println("The index of the minimum of row " + i + " is: " + minsOfEachRow[i]);
    }
  }

  public static int[] rowMinsIndex(int[][] nums) {
    int [] count = new int [nums.length];
    int [] minIndexes = new int [nums.length];
    Arrays.fill(count, Integer.MAX_VALUE);
    for(int i = 0; i < count.length; i++){
      for(int x = 0; x < nums[0].length; x++){
        if(nums[i][x] < count[i]){
          count[i] = nums[i][x];
          minIndexes[i] = x;
        }
      }
    }
    return minIndexes;
  }
}

Ouput:

The twoDimensionalArray is: [[1, 2, 5], [4, 3, 6], [7, 5, 9]]
The index of the minimum of row 0 is: 0
The index of the minimum of row 1 is: 1
The index of the minimum of row 2 is: 1

Try it here!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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