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.
Deja una respuesta