Minimum et maximum d'un tableau en Java
Comme on le dit et on le répète, Java fournit des méthodes prédéfinies grâce à son concept orienté objet, ce qui nous rend la programmation plus simple, mais en programmant ces méthodes nous même, ça nous aide à s’entraîner un peu et garder notre forme. Revenant à notre sujet principal, pour trouver la valeur maximale et minimale dans un tableau de n éléments, il faut savoir qu'il est nécessaire de parcourir tout le tableau du premier au dernier élément tout en comparant l'élément le plus grand/petit trouvé jusqu'ici avec l'élément en cours.Dans les exemples de cet article, nous allons présenter les quatre solutions pour rechercher la valeur minimale et maximale dans un tableau:
- Solution Naïve
- Java 8
- La librairie Api Guava de Google
- La librairie Apache Commons
Voici un programme Java qui renvoie la valeur et la position de la plus petite valeur dans un tableau.
public class min_max_array {Exécution:
public static void main(String[] args) {
int maxVal = Integer.MAX_VALUE;
int minVal = Integer.MIN_VALUE;
int array[] = {51, 24, 19, 5, 37, 76, 61, 99, 101, 36};
for (int nombre:array)
System.out.print(nombre+" ");
for(int i = 0; i < array.length; i++){
if(array[i] < maxVal)
maxVal = array[i];
if(array[i] > minVal)
minVal = array[i];
}
System.out.print("\nValeur minimale = "+maxVal);
System.out.print("\nValeur maximale = "+minVal);
}
}
51 24 19 5 37 76 61 99 101 36L'exemple initialise d'abord la variable minVal avec Integer.MAX_VALUE qui est la plus grande valeur que int peut prendre. Cela est fait pour être sur que la valeur initiale ne soit pas accidentellement plus petite que la première valeur dans le tableau.
Valeur minimale = 5
Valeur maximale = 101
Deuxièmement, le programme parcourt le tableau et compare chaque valeur avec minVal. Si l'élément dans le tableau est plus petit que minVal alors minVal reçoit la valeur de cet élément.
Finalement, la valeur minimale trouvée dans le tableau est affichée.
Java 8
Avec Java 8, il est facile de trouver le plus grand et le plus petit nombre. Dans le premier code, on est entrain de convertir un array en stream, ensuite on appelle la méthode Arrays.stream().max() qui retourne un OptionalInt et qui contient la plus grande valeur trouvée.
Le deuxième code utilise IntStream, un stream spécialisé pour les int primitives, et à partir d'ici il est possible d'appeller la méthode intStream.of().max() qui retourne un OptionalInt.
public void max_array_java8 (int[] tab) {
OptionalInt max = Arrays.stream(tab).max();
//ou
OptionalInt max = IntStream.of(tab).max();
}
public void min_array_java8 (int[] tab) {
OptionalInt min = Arrays.stream(tab).min();
//ou
OptionalInt min = IntStream.of(tab).min();
}
L'API Guava de Google
La classe Ints de Guava fournit deux méthodes Ints.max() et Ints.min() qui retournent la plus grande et la plus petite valeur respectivement. Pour pouvoir utiliser cette API, téléchargez là à partir du site officiel de Google Guava.
à
public static int max_array_guava (int[] tab) {
int max = Ints.max(tab);
return max;
}
public static int min_array_guava (int[] tab) {
int min = Ints.min(tab);
return min;
}
Apache Commons
La classe NumberUtils de Apache commons donne une fonctionnalité additionnel au java et contient deux méthode NumberUtils.max() et NumberUtils.min() qui retournent la plus grande et la plus petite valeur respectivement. Pour pouvoir utiliser cette librairie, téléchargez là à partir du site officiel de l'api Apache Commons.public static int max_array_apache (int[] tab) {Références:
int max = NumberUtils.max(tab);
return max;
}
public static int min_array_apache (int[] tab) {
int min = NumberUtils.min(tab);
return min;
}
Find Min & Max in an Array Using Minimum Comparisons