Obtener el máximo y mínimo valor de un array en Java

Hola a todos, hoy os vamos a explicar como obtener el máximo y mínimo valor de un array en Java.

En algunos algoritmos, puede que necesitemos obtener el máximo o el mínimo de un array.

El proceso para obtener el número mayor que realizaríamos seria la siguiente:

  • Indico que la primera posición del array, es el que considero como el «mayor». Lo guardamos en una variable.
  • Recorremos el array y si el número en el que estamos es mayor que el considero como «mayor», lo actualizamos.

Veamos como lo representaríamos en código:


public class MaxMinArray {

    public static void main(String[] args) {

        int[] valores = {10, 20, 5, 1, 7, 30, 4};

        int mayor = valores[0];

        for (int i = 1; i < valores.length; i++) {
            if (valores[i] > mayor) {
                mayor = valores[i];
            }
        }

        System.out.println("El número mayor es el " + mayor);

    }

}

Este seria el resultado:

El proceso para obtener el número menor que realizaríamos seria la siguiente:

  • Indico que la primera posición del array, es el que considero como el «menor».
  • Recorremos el array y si el número en el que estamos es menor que el considero como «menor», lo actualizamos.

Veamos como lo representaríamos en código:



public class MaxMinArray {

    public static void main(String[] args) {

        int[] valores = {10, 20, 5, 1, 7, 30, 4};

        int menor = valores[0];

        for (int i = 1; i < valores.length; i++) {
            if (valores[i] < menor) {
                menor = valores[i];
            }
        }

        System.out.println("El número menor es el " + menor);

    }


}


Este seria el resultado:

De forma conjunta seria así:


public class MaxMinArray {

    public static void main(String[] args) {

        int[] valores = {10, 20, 5, 1, 7, 30, 4};

        int mayor = valores[0];

        for (int i = 1; i < valores.length; i++) {
            if (valores[i] > mayor) {
                mayor = valores[i];
            }
        }

        System.out.println("El número mayor es el " + mayor);

        int menor = valores[0];

        for (int i = 1; i < valores.length; i++) {
            if (valores[i] < menor) {
                menor = valores[i];
            }
        }

        System.out.println("El número menor es el " + menor);

    }

}

Este es el resultado:

Si lo queremos en forma de función, seria algo así:


/**
 * Indica cual es el menor número de un array
 *
 * @param numeros Array de int
 * @return Menor número
 */
public static int minimo(int[] numeros) {

    if (numeros == null) {
        return -1;
    } else {
        int menor = numeros[0];

        for (int i = 1; i < numeros.length; i++) {
            if (numeros[i] < menor) {
                menor = numeros[i];
            }
        }

        return menor;
    }

}

/**
 * Indica cual es el mayor número de un array
 *
 * @param numeros Array de int
 * @return Mayor número
 */
public static int maximo(int[] numeros) {

    if (numeros == null) {
        return -1;
    } else {
        int mayor = numeros[0];

        for (int i = 1; i < numeros.length; i++) {
            if (numeros[i] > mayor) {
                mayor = numeros[i];
            }
        }

        return mayor;
    }

}

En el caso de que el array sea nulo, devolveremos -1 a modo de error.

Así mejoraríamos el código:


public class MaxMinArray {

    public static void main(String[] args) {

        int[] valores = {10, 20, 5, 1, 7, 30, 4};

        int mayor = maximo(valores);

        System.out.println("El número mayor es el " + mayor);

        int menor = minimo(valores);

        System.out.println("El número menor es el " + menor);

    }

    /**
     * Indica cual es el menor número de un array
     *
     * @param numeros Array de int
     * @return Menor número
     */
    public static int minimo(int[] numeros) {

        if (numeros == null) {
            return -1;
        } else {
            int menor = numeros[0];

            for (int i = 1; i < numeros.length; i++) {
                if (numeros[i] < menor) {
                    menor = numeros[i];
                }
            }

            return menor;
        }

    }

    /**
     * Indica cual es el mayor número de un array
     *
     * @param numeros Array de int
     * @return Mayor número
     */
    public static int maximo(int[] numeros) {

        if (numeros == null) {
            return -1;
        } else {
            int mayor = numeros[0];

            for (int i = 1; i < numeros.length; i++) {
                if (numeros[i] > mayor) {
                    mayor = numeros[i];
                }
            }

            return mayor;
        }

    }

}


Este sería el resultado:

También lo podemos hacer de forma recursiva:



public class MaxMinArrayFuncRec {

    public static void main(String[] args) {

        int[] valores = {10, 20, 5, 1, 7, 30, 4};

        int mayor = maximoRec(valores, 0);

        System.out.println("El número mayor es el " + mayor);

        int menor = minimoRec(valores, 0);

        System.out.println("El número menor es el " + menor);

    }

    /**
     * Devuelve el minimo numero de un array recursivamente
     *
     * @param numeros Conjunto de numeros
     * @param indice Indice donde se encuentra
     * @return El minimo del array
     */
    public static int minimoRec(int[] numeros, int indice) {

        //Cuando el indice sea igual a la longitud del array menos uno, terminaremos la recursividad
        if (indice == numeros.length - 1) {
            return numeros[indice];
        } else {
            //Comparamos el 1º con el 2º, el 2º con el 3º, etc.
            return Math.min(numeros[indice], minimoRec(numeros, indice + 1));

        }

    }

    /**
     * Indica cual es el mayor número de un array recursivamente
     *
     * @param numeros Array de int
     * @param indice Indice donde se encuentra
     * @return Mayor número
     */
    public static int maximoRec(int[] numeros, int indice) {

        //Cuando el indice sea igual a la longitud del array menos uno, terminaremos la recursividad
        if (indice == numeros.length - 1) {
            return numeros[indice];
        } else {

            //Comparamos el 1º con el 2º, el 2º con el 3º, etc.
            return Math.max(numeros[indice], maximoRec(numeros, indice + 1));

        }

    }

}


El resultado seria el mismo:

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada.