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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager