algorithmique(gestion de la memoire)detection des occurrences
Bonjour tt le monde,
voici un extrait d'un algorithme tiré du livre "Algorithme java 5 " de l'exercice 1 du chapitre 3 pour la detection du meme nombre d'occurrences.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public void detecte_occurrences() {
// --- boucle de détection des occurrences ---
for (int i=0;i<nbelements;i++)
{ // on vérifie que cet élément n'a pas déjà été traité
boolean trouve=false;
for (int j=0; j<i;j++)
{
if (tab[i]==tab[j])
trouve=true;
}
if (!trouve)
{ // on comptabilise ses occurrences
int occurrences=1;
for (int j=i+1; j<nbelements; j++)
if (tab[i]==tab[j]) occurrences++;
System.out.printf("%5d : %3d occurrence(s)\n",tab[i],occurrences);
}
}
} |
je voudrais savoir si mon raisonnement tient la route concernant les 3 boucles , par exemple en saisissant " 1 3 5 3 1 "
Au début on va comparer la case 1(represente i) et la case 0(represente j) qui represente respectivement "3" et "1" si la valeur est false , on passe à la boucle suivante avec comme indice j=i+1 c-a-d j vaut l'indice 2 qui est de valeur 5 , ensuite on fait la comparaison entre i (indice en cours) et j comme dans le cas ci-dessous . on compare 3 et 5 ensuite 3 et 3 qui vaut true donc occurrence++ et enfin 3 et 1.
on revient apres à la premiere boucle pour l'indice 2 (i=5) , 5 et 3 est false et on recomence de la meme maniere que le cas precedent.
pour la valeur 1 = 2 occurences, j'ai raisonné de cette manière dans le cas ou je reprends ma boucle principale pour passer à l'indice (i) = 3 qui à la valeur 3 et que celle-ci à l'indice (j) de valeur 5 et qu'il me renvoi un false donc je passe à la 3 eme boucle qui commence avec j=i+1 avec la valeur 1 et que je compare ensuite à l'indice i qui avait stocké des le depart la valeur 1. donc occurrence++
j'aimerai avoir votre avis concernant mon raisonement pour cet algorithme.
Merci d'avance.