Trouver le 3ème plus petit nombre en Java : un guide complet
Publié: 2023-08-23Vous êtes-vous déjà demandé comment trouver efficacement le troisième plus petit nombre dans un tableau, une liste ou un flux d'entiers ? Dans cet article de blog, nous plongerons dans le monde de la programmation Java et explorerons différentes techniques permettant d'identifier le troisième plus petit nombre dans diverses sources de données.
Lorsque l’on travaille avec la manipulation et l’analyse de données, il est souvent nécessaire d’identifier des éléments spécifiques au sein d’une collection de chiffres. Trouver le plus petit ou le plus grand nombre est relativement simple, mais déterminer le troisième plus petit nombre nécessite un peu plus de finesse. Dans cet article de blog, nous aborderons trois méthodes pour résoudre ce problème à l'aide de Java : trier un tableau, trier une liste et utiliser des flux.
Méthode 1 : trier un tableau
Les tableaux sont l'une des structures de données fondamentales en Java, ce qui en fait un point de départ naturel pour notre exploration. L'idée ici est de trier le tableau par ordre croissant puis de récupérer l'élément à l'index 2.
Méthode 2 : trier une liste
Les listes offrent une alternative plus flexible aux tableaux, permettant un redimensionnement dynamique et une manipulation plus facile. Pour trouver le troisième plus petit nombre d’une liste, nous pouvons suivre une approche similaire au tri des tableaux.
Méthode 3 : Utiliser les flux
Les flux Java constituent un moyen puissant de traiter des séquences d’éléments. Nous pouvons utiliser des flux pour trier les éléments puis récupérer le troisième plus petit nombre.
Choisir la bonne méthode
Chaque méthode a ses propres avantages et cas d’utilisation. Si vous disposez d’un tableau, la méthode de tri des tableaux peut être la plus efficace. Les listes sont polyvalentes et offrent plus de commodité, tandis que les flux offrent une approche fonctionnelle et peuvent gérer facilement des ensembles de données plus volumineux.
Voici un exemple complet :
CrunchyThirdSmallestNumberFinder.java
paquet crunchify.com.tutorial ; importer java.util.Arrays ; importer java.util.List ; importer java.util.stream.Collectors ; importer java.util.stream.Stream ; /** * @auteur Crunchify.com * Trouver le 3ème plus petit nombre en Java : un guide complet * */ classe publique CrunchyThirdSmallestNumberFinder { // Méthode pour trouver le troisième plus petit nombre dans un tableau public static int findCrunchyThirdSmallest(int[] crunchArr) { si (crunchArr.length < 3) { throw new IllegalArgumentException("Le tableau doit contenir au moins 3 éléments crunch"); } // Trie le tableau croustillant par ordre croissant Arrays.sort(crunchArr); retourner crunchArr[2]; // Renvoie le troisième plus petit élément croustillant } // Méthode pour trouver le troisième plus petit nombre dans une liste public static int findCrunchyThirdSmallest(List<Integer> crunchList) { si (crunchList.size() < 3) { throw new IllegalArgumentException("La liste doit contenir au moins 3 éléments crunch"); } // Trie la liste croustillante à l'aide de flux et rassemble les éléments triés dans une nouvelle liste Liste<Integer> sortedCrunchList = crunchList.stream() .trié() .collect(Collectors.toList()); return sortedCrunchList.get(2); // Renvoie le troisième plus petit élément croustillant } // Méthode pour trouver le troisième plus petit nombre croustillant dans un flux public static int findCrunchyThirdSmallest(Stream<Integer> crunchStream) { // Collectez les éléments du flux croustillant, triez-les et rassemblez-les dans une liste List<Integer> sortedCrunchList = crunchStream.sorted().collect(Collectors.toList()); si (sortedCrunchList.size() < 3) { throw new IllegalArgumentException("Le flux doit contenir au moins 3 éléments crunch"); } return sortedCrunchList.get(2); // Renvoie le troisième plus petit élément croustillant } public static void main (String[] arguments) { int[] crunchArr = {35, 62, 28, 31, 13, 97}; List<Integer> crunchList = Arrays.asList(9, 14, 676, 62, 11, 328); Stream<Integer> crunchStream = Stream.of(427, 53, 71, 99, 25, 62); // Trouvez le troisième plus petit nombre croquant en utilisant différentes sources int crunchyThirdSmallestFromArr = findCrunchyThirdSmallest(crunchArr); int crunchyThirdSmallestFromList = findCrunchyThirdSmallest(crunchList); int crunchyThirdSmallestFromStream = findCrunchyThirdSmallest(crunchStream); // Imprime les troisièmes plus petits nombres croquants System.out.println("Troisième plus petit croquant de l'arr : " + crunchyThirdSmallestFromArr); System.out.println("Troisième plus petit de la liste : " + crunchyThirdSmallestFromList); System.out.println("Troisième plus petit du flux : " + crunchyThirdSmallestFromStream); } }
Résultat de la console Eclipse :
Exécutez simplement le programme ci-dessus dans Eclipse IDE ou IntelliJ IDEA et vous obtiendrez le résultat ci-dessous.
Troisième plus petit croquant de l'arr. : 31 Troisième plus petit croquant de la liste : 14 Troisième plus petit croquant du ruisseau : 62 Processus terminé avec le code de sortie 0
Il existe certaines différences de performances à prendre en compte :
En termes de complexité temporelle, les trois méthodes ont des étapes de tri similaires, qui ont généralement une complexité temporelle de O(n log n)
, où « n » est le nombre d'éléments dans la collection (tableau, liste ou flux).
La complexité temporelle de l'accès au troisième plus petit élément est constante, O(1)
, puisqu'il s'agit d'une simple recherche dans un tableau ou une liste.
- Méthode Array : cette méthode trie le tableau sur place, elle ne nécessite donc pas de mémoire supplémentaire pour une nouvelle collection triée. Cela peut conduire à une utilisation de la mémoire légèrement meilleure par rapport aux méthodes de liste et de flux.
- Méthode List : cette méthode convertit la liste en une liste triée à l’aide de flux. Bien que pratique, cela implique la création d’une nouvelle liste, ce qui consomme de la mémoire supplémentaire. Cela peut poser problème si l’utilisation de la mémoire est cruciale.
- Méthode Stream : La méthode stream est assez flexible et fonctionnelle, mais elle implique de collecter le flux dans une liste. Cela ajoute une petite surcharge en termes de mémoire et de traitement par rapport au tri direct du tableau.
Faites-moi savoir si vous rencontrez un problème lors de l'exécution de ce code.