Find second maximum value matrix

2

I have a matrix and I find the maximum number but I would like to know how I can find the second maximum. I will leave the methods I have ... Thank you

public double maximMat(double[][] mat) {
  double max=0;
  for (int i = 0; i < mat.length; i++) {
    for (int j = 0; j < mat[i].length; j++) {
      if (mat[i][j]>max) {
        max=mat[i][j];
      }
    }
  }
  return max; //EL NUMERO MAXIMO DE LA MATRIZ
}

//LE PASO POR PARAMETROS EL MAXIMO 
public double secondMaxim(double[][] mat,double max) {

  double max2=0;
  for (int i = 0; i < mat.length; i++) {
    for (int j = 0; j < mat[i].length; j++) {


      if (max>max2 && max2>mat[i][j]) {
        max2=mat[i][j];
      } // INTENTO ALGO 
    }
  }
  return max2;
}
    
asked by Iron Man 10.05.2018 в 03:50
source

2 answers

1

It can be done in a thousand ways, but here you have the one you tried.

public double maximMat(double[][] mat) {
  double max=0;
  for (int i = 0; i < mat.length; i++) {
    for (int j = 0; j < mat[i].length; j++) {
      if (mat[i][j]>max) {
        max=mat[i][j];
      }
    }
  }
  return max; //EL NUMERO MAXIMO DE LA MATRIZ
}

//LE PASO POR PARAMETROS EL MAXIMO 
public double secondMaxim(double[][] mat,double max) {
  double max2=0;
  for (int i = 0; i < mat.length; i++) {
    for (int j = 0; j < mat[i].length; j++) {
      if (mat[i][j]>max2 && mat[i][j]<max) {
        max2=mat[i][j];
      }
    }
  }
  return max2; //EL SEGUNDO NUMERO MAXIMO DE LA MATRIZ
}
    
answered by 10.05.2018 / 04:04
source
0

It is very easy, it is solved with a simple if .

Here I leave the code well commented:

import java.util.Random;

public class SO {

    public static void main(String[] args) {

        Random random = new Random();

        // Matriz
        double matriz[][] = new double[3][2];

        // Llenar matriz con números positivos y negativos
        for (int x = 0; x < matriz.length; x++) {
            for (int y = 0; y < matriz[x].length; y++) {
                matriz[x][y] = (random.nextInt(21)-10) / 10.0;
            }
        }

        // Imprimir matriz resultante
        for (int x = 0; x < matriz.length; x++) {
            for (int y = 0; y < matriz[x].length; y++) {
                System.out.println("[" + x + "][" + y + "] " + matriz[x][y]);
            }
        }

        double maximo1 = maximMat(matriz);
        double maximo2 = secondMaxim(matriz, maximo1);
        System.out.println("El 1er máximo es: " + maximo1);
        System.out.println("El 2do máximo es: " + maximo2);

    }

    // Encontrar el valor máximo de la matriz
    public static double maximMat(double[][] mat) {
        double max = 0;
        for (int i = 0; i < mat.length; i++) {
            for (int j = 0; j < mat[i].length; j++) {
                if (mat[i][j] > max) {
                    max = mat[i][j];
                }
            }
        }
        return max;
    }

    // Encontrar el segundo valor máximo de la matriz
    public static double secondMaxim(double[][] mat, double max) {

        double max2 = 0;
        for (int i = 0; i < mat.length; i++) {
            for (int j = 0; j < mat[i].length; j++) {

                // Si es mayor que max2 PERO menor que max
                if (mat[i][j] > max2 && mat[i][j] < max) {
                    max2 = mat[i][j];
                }
            }
        }
        return max2;
    }
}

Result:

[0] [0] 0.5

[0] [1] -0.8

[1] [0] 1.0

[1] [1] -0.7

[2] [0] 0.6

[2] [1] 0.0

The 1st maximum is: 1.0

The 2nd maximum is: 0.6

    
answered by 10.05.2018 в 04:17