Difficulté à lire un algorithme tri à bulle
etudiant83
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
S'il vous plait, quelqu'un pourrait il m'expliquer comment lire l'algorithme de tri à bulle suivant (c'est mon prof qui me l'a donné) :
par exemple j'ai le tableau suivant et je veux classer les valeurs par ordre croissant :
tableau T1
4 1 2 3 6 5
Algorithme Tri à Bulle :
VAR
T1 : Tableau (1...6) d'entiers;
i, j, temp : entiers;
DEBUT
Pour i de 6 à 1 pas de -1
j<-- 1
Tant Que j < i faire
Si T1(j) > T1(j+1) alors
temp <-- T1(j)
T1(j) <--T1(j+1)
T1(j+1) <--temp
FinSi
j <-- j+1
Fin Tant Que
Fin Pour
Fin
en fait mon problème c'est que je comprend le but de cet algorithme qui consiste à comparer les valeurs de chaque cases adjacente et de les inverser si besoin.
Ce que je ne comprend pas c'est la lecture de l'algorithme, savoir quels nombre de mon tableau est représenté par les variables i, j et temp.
bref, quelqu'un pourrait il m'expliquer en me faisant par exemple un copier coller de cet algorithme puis en notant en face de chaque ligne de l'algorithme une phrase qui précise dans un langage clair ce que chaque ligne signifie.
je remercie infiniment ceux/celles qui voudront bien prendre de leur temps pour vouloir m'expliquer.
S'il vous plait, quelqu'un pourrait il m'expliquer comment lire l'algorithme de tri à bulle suivant (c'est mon prof qui me l'a donné) :
par exemple j'ai le tableau suivant et je veux classer les valeurs par ordre croissant :
tableau T1
4 1 2 3 6 5
Algorithme Tri à Bulle :
VAR
T1 : Tableau (1...6) d'entiers;
i, j, temp : entiers;
DEBUT
Pour i de 6 à 1 pas de -1
j<-- 1
Tant Que j < i faire
Si T1(j) > T1(j+1) alors
temp <-- T1(j)
T1(j) <--T1(j+1)
T1(j+1) <--temp
FinSi
j <-- j+1
Fin Tant Que
Fin Pour
Fin
en fait mon problème c'est que je comprend le but de cet algorithme qui consiste à comparer les valeurs de chaque cases adjacente et de les inverser si besoin.
Ce que je ne comprend pas c'est la lecture de l'algorithme, savoir quels nombre de mon tableau est représenté par les variables i, j et temp.
bref, quelqu'un pourrait il m'expliquer en me faisant par exemple un copier coller de cet algorithme puis en notant en face de chaque ligne de l'algorithme une phrase qui précise dans un langage clair ce que chaque ligne signifie.
je remercie infiniment ceux/celles qui voudront bien prendre de leur temps pour vouloir m'expliquer.
A voir également:
- Difficulté à lire un algorithme tri à bulle
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Lire un fichier epub - Guide
- Comment faire un tri personnalisé sur excel - Guide
- Comment lire un message supprimé sur whatsapp - Guide
- Lire fichier bin - Guide
4 réponses
Normalement pour ce genre de problème, on commence par un papier, un crayon et une gomme !
Pour comprendre le principe voici une petite vidéo : Bubble Sort
Après avoir compris ce qui se passe sur la vidéo, je suis sûr que tu verras un peu mieux ce qui se passe dans ton tableau...
Pour comprendre le principe voici une petite vidéo : Bubble Sort
Après avoir compris ce qui se passe sur la vidéo, je suis sûr que tu verras un peu mieux ce qui se passe dans ton tableau...
merci pour ta réponse et pour le lien KX. Mais comme je l'ai dit dans mon premier message, j'ai compris le principe du tri à bulle qui consiste à comparer successivement chaque valeur avec la case adjacente puis de les intervertir. ce que je n'ai pas compris c'est la manière de retranscrire ça en algorithme et la façon de lire celui que mon prof m'a donné.
VAR
T1 : Tableau (1...6) d'entiers; // le tableau qui contient les données
i, j, temp : entiers; // i numéro de la case de fin à atteindre par le max
// j numéro de case où se trouve le max courant
DEBUT
Pour i de 6 à 1 pas de -1 // on commence par i=6, on veut le plus grand max
j<-- 1 // j=1, car la case 1 contient le max des 1 premières cases
Tant Que j < i faire // tant qu'on a pas parcouru tous les j susceptibles de remplir i
Si T1(j) > T1(j+1) alors // si on a nombre plus grand avant qui on précède un autre alors on les permute
temp <-- T1(j) // début de la permutation, on sauvegarde T1(j)
T1(j) <--T1(j+1) // suite de la permutation, on écrase T1(j) par la valeur T1(j+1)
T1(j+1) <--temp // fin de la permutation, on écrase T1(j+1) avec la valeur sauvegardée de l'ancien T1(j)
FinSi // on a terminé la permutation, on est sûr que le max des j+1 premiers éléments est en T(j+1)
j <-- j+1 // on incrémente j pour considérer un ensemble plus grand jusqu'à atteinde j=i
Fin Tant Que // fin de la boucle, j=i, on est sûr que le max des i éléments est en t1(i)
Fin Pour // on décrémente i, pour calculer le max des i-1 éléments, au delà de la case i, le tableau est déjà trié
Fin // i=1, c'est terminé, tous le tableau est trié
T1 : Tableau (1...6) d'entiers; // le tableau qui contient les données
i, j, temp : entiers; // i numéro de la case de fin à atteindre par le max
// j numéro de case où se trouve le max courant
DEBUT
Pour i de 6 à 1 pas de -1 // on commence par i=6, on veut le plus grand max
j<-- 1 // j=1, car la case 1 contient le max des 1 premières cases
Tant Que j < i faire // tant qu'on a pas parcouru tous les j susceptibles de remplir i
Si T1(j) > T1(j+1) alors // si on a nombre plus grand avant qui on précède un autre alors on les permute
temp <-- T1(j) // début de la permutation, on sauvegarde T1(j)
T1(j) <--T1(j+1) // suite de la permutation, on écrase T1(j) par la valeur T1(j+1)
T1(j+1) <--temp // fin de la permutation, on écrase T1(j+1) avec la valeur sauvegardée de l'ancien T1(j)
FinSi // on a terminé la permutation, on est sûr que le max des j+1 premiers éléments est en T(j+1)
j <-- j+1 // on incrémente j pour considérer un ensemble plus grand jusqu'à atteinde j=i
Fin Tant Que // fin de la boucle, j=i, on est sûr que le max des i éléments est en t1(i)
Fin Pour // on décrémente i, pour calculer le max des i-1 éléments, au delà de la case i, le tableau est déjà trié
Fin // i=1, c'est terminé, tous le tableau est trié