Trouver le minimum [Résolu/Fermé]

Signaler
-
Messages postés
16370
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 juillet 2021
-
Bonjour,

J'aimerai trouver le minimum mais cela ne fonctionne pas, il s'arrête dès la première comparaison.

	public int valeurMinimum(){
		int min = 0;
		for (int i = 0; i < nombresDEntiers; i++){
			for (int j = i+1; i < nombresDEntiers; i++){
				if (table[j] < table[i]){
					min = table[j];
				}
			}
			return min;
		}
		return 0;
	}

1 réponse

Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017
11
Deux erreurs : pourquoi cette double boucle? Ensuite pourquoi tu initialise min à 0 ? ça n'est pas très logique, car il n'y pas de raison que ton tableau soit composé que de chiffre <0 non ? Ton code est étrange et très peu efficace (en plus de ne pas fonctionner) puisque pour chaque valeur tu vas comparer avec toutes les suivantes alors qu'en faite il suffit de comparer de proche en proche.

Voila ce que donne une version plus simple de ton programme :


public int valeurMinimum(){
int min = table[0];
int i;
for ( i = 0; i < nombresDEntiers; i++){
if (table[i] < min){
min = table[i];
}
}
return min;
}


de même :



public int valeurMaximum(){
int max = table[0];
int i;
for ( i = 0; i < nombresDEntiers; i++){
if (table[i] > max){
max = table[i];
}
}
return max;
}
Messages postés
16370
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 juillet 2021
2 856
Bonjour,

Deux remarques :
  • on peut commencer les boucles à i = 1 car table[0] est déjà pris en compte par l'initialisation.
  • dans la vraie vie, un développeur ne devrait pas avoir à faire ce genre de boucles, Java fournit déjà des classes utilitaires pour faire ça :

public static int valeurMinimum(int...table) {
    return java.util.Arrays.stream(table).min().getAsInt();
}

Merci ça fonctionne !
Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017
11
Hm c'est vrai que je suis pas dev java, alors j'adapte mon C.
Cependant je suis pas pour toujours réinventer la roue, mais là ça va pas faire de mal de savoir comment implémenter ce genre de truc...
C'est un peu triste même que l'on puisse se passer de coder ce genre de rudiment, de même que pour les recherches dans les tableaux, c'est des algo vraiment hyper fondamentale qu'il faut comprendre et implémenter soit même.

YCN-
Messages postés
16370
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
18 juillet 2021
2 856 >
Messages postés
116
Date d'inscription
mercredi 24 juin 2015
Statut
Membre
Dernière intervention
13 juillet 2017

"ça va pas faire de mal de savoir comment implémenter ce genre de truc"
En effet, il y a de toute façon des cas où on ne peut faire que comme ça.

"c'est des algo vraiment hyper fondamentale qu'il faut comprendre et implémenter soit même."
Je suis moins d'accord, dans un contexte professionnel où l'on code des traitements de données à longueur de journée la moindre étourderie fausse tout.
Alors pouvoir utiliser des algorithmes dont le résultat et la performance sont garantis évitent au développeur de perdre de l'énergie à les refaire lui même au risque de se tromper.
Il faut voir d'ailleurs au delà de ce seul exemple que les stream en Java permettent de faire énormément de traitement avec une logique relativement simple à comprendre, ce qui permet aussi de mieux entrer dans un code existant sans avoir à décortiquer l'algo dans sa structure au plus bas niveau.