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. Los campos obligatorios están marcados con *