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.