Énoncé
Saisir N avec 1 ≤ N ≤ 100, puis remplir un tableau T de N entiers. Écrire une procédure Trier qui trie T par ordre croissant avec le tri à bulles, puis afficher le tableau. Le programme principal appelle Saisir, Remplir, Trier et Afficher.
Exemples et cas limites
Saisissez ces valeurs dans la console pour vérifier votre résultat :
Saisir N, puis les N entiers t[0] à t[N − 1], un par un. Les données de l’exemple sont un essai : choisissez vos propres valeurs dans le terminal.
Entrée
N = 5 t[0] = 8 t[1] = 3 t[2] = 5 t[3] = 3 t[4] = 1
Sortie attendue
1 3 3 5 8
Entrée
N = 3 t[0] = 7 t[1] = -2 t[2] = 1
Sortie attendue
-2 1 7
Entrée
N = 1 t[0] = 4
Sortie attendue
4
Complétez les modules marqués par un commentaire dans le code de départ. Les modules déjà écrits permettent de saisir vos données. Exécutez les cas de test et comparez la sortie attendue, ou ouvrez directement l’onglet Correction.
Code algorithmique
| 1 | algorithme tri_a_bulles |
| 2 | debut |
| 3 | saisir(n) |
| 4 | remplir(t, n) |
| 5 | trier(t, n) |
| 6 | afficher(t, n) |
| 7 | fin |
| 8 | |
| 9 | procedure saisir(@n : entier) |
| 10 | debut |
| 11 | repeter |
| 12 | ecrire("N = ") |
| 13 | lire(n) |
| 14 | jusqua 1 ≤ n ≤ 100 |
| 15 | fin |
| 16 | |
| 17 | procedure remplir(@t : tab, n : entier) |
| 18 | debut |
| 19 | pour i de 0 à n - 1 faire |
| 20 | ecrire("t[" + convch(i) + "] = ") |
| 21 | lire(t[i]) |
| 22 | fin_pour |
| 23 | fin |
| 24 | |
| 25 | procedure trier(@t : tab, n : entier) |
| 26 | debut |
| 27 | // compléter le traitement demandé dans l’énoncé. |
| 28 | fin |
| 29 | |
| 30 | procedure afficher(t : tab, n : entier) |
| 31 | debut |
| 32 | pour i de 0 à n - 1 faire |
| 33 | ecrire(t[i], " ") |
| 34 | fin_pour |
| 35 | ecrire_nl("") |
| 36 | fin |
| 1 | algorithme tri_a_bulles |
| 2 | debut |
| 3 | saisir(n) |
| 4 | remplir(t, n) |
| 5 | trier(t, n) |
| 6 | afficher(t, n) |
| 7 | fin |
| 8 | |
| 9 | procedure saisir(@n : entier) |
| 10 | debut |
| 11 | repeter |
| 12 | ecrire("N = ") |
| 13 | lire(n) |
| 14 | jusqua 1 ≤ n ≤ 100 |
| 15 | fin |
| 16 | |
| 17 | procedure remplir(@t : tab, n : entier) |
| 18 | debut |
| 19 | pour i de 0 à n - 1 faire |
| 20 | ecrire("t[" + convch(i) + "] = ") |
| 21 | lire(t[i]) |
| 22 | fin_pour |
| 23 | fin |
| 24 | |
| 25 | procedure trier(@t : tab, n : entier) |
| 26 | debut |
| 27 | pour i de 0 à n - 2 faire |
| 28 | pour j de 0 à n - 2 - i faire |
| 29 | si t[j] > t[j + 1] alors |
| 30 | aux ← t[j] |
| 31 | t[j] ← t[j + 1] |
| 32 | t[j + 1] ← aux |
| 33 | fin si |
| 34 | fin_pour |
| 35 | fin_pour |
| 36 | fin |
| 37 | |
| 38 | procedure afficher(t : tab, n : entier) |
| 39 | debut |
| 40 | pour i de 0 à n - 1 faire |
| 41 | ecrire(t[i], " ") |
| 42 | fin_pour |
| 43 | ecrire_nl("") |
| 44 | fin |
Méthode
- Comparer deux voisins et les échanger si nécessaire.
- Après chaque passage, le plus grand élément restant est à droite.