Trouver le minimum

Résolu/Fermé
helloworld95 - 19 mai 2017 à 13:22
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 23 mai 2017 à 17:57
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

YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 12
Modifié le 19 mai 2017 à 14:05
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;
}
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019
19 mai 2017 à 19:29
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();
}
0
helloword95
22 mai 2017 à 15:03
Merci ça fonctionne !
0
YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017 12
23 mai 2017 à 14:09
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-
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 019 > YCN- Messages postés 116 Date d'inscription mercredi 24 juin 2015 Statut Membre Dernière intervention 13 juillet 2017
23 mai 2017 à 17:57
"ç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.
0