Signaler

Trouver le minimum [Résolu]

Posez votre question helloworld95 - Dernière réponse le 23 mai 2017 à 17:57 par KX
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;
	}
Utile
+0
plus moins
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;
}
KX 14792Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 19 septembre 2017 Dernière intervention - 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();
}
Répondre
helloword95- 22 mai 2017 à 15:03
Merci ça fonctionne !
Répondre
YCN- 145Messages postés mercredi 24 juin 2015Date d'inscription 13 juillet 2017 Dernière intervention - 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-
Répondre
KX 14792Messages postés samedi 31 mai 2008Date d'inscription ModérateurStatut 19 septembre 2017 Dernière intervention - 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.
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !