Variables en entrée:
int tailleTab = 10; int tab[tailleTab]={45,25,3,122,345,12,26,89,1,7}; /* tableau entièrement initialisé */ int nbEffectif = 10; |
Variables auxiliaires: int indTab; /* indice du tableau pour les comparaisons succéssive dans l'itérative */ int elemTemp; /* sert pour la permutation */ int debTab; /* condition d'arrêt pour un passage (le premier élément non trié du tableau) */ bool permutation; /* drapeau qui indique s'il y a eu permutation ou non */ |
Corps de
l'algorithme détaillé: debTab = 0; do /* On fait au moins une fois l'itération */ { indTab = nbEffectif - 1; /* on part du dernier élément du tableau */ permutation = FALSE; /* pas de permutation pour l'instant */ while (indTab > debTab) /* on parcourt tout le tableau qui reste à trier */ { if (tab[indTab] < tab[indTab - 1]) { elemTemp = tab[indTab - 1]; /* on permute */ tab[indTab - 1] = tab[indTab]; tab[indTab] = elemTemp; permutation = TRUE; /* il y a eu une permutation (drapeau levé)*/ } /* fin du if */ indTab = indTab -1; } /* fin du while */ debTab = debTab + 1; /* Passage suivant tab[debTab] est trié, on passe au suivant */ } while (permutation) ; /* tant qu'il y a eu une permutation */ /* fin du do ..while */ for (indTab=0; ind<nbEffectif; i++) afficher(" ", tab[ind]); /* afficher les éléments du tableau */ |