TRI a BULLE simple (cas des listes)
Les elements sont tries dans l'ordre croissant la tete de la liste
contenant le plus faible, la queue le plus fort
relation_d_ordre(arg1,arg2)
si arg1 ">" arg2
alors relation_d_ordre <- VRAI
sinon relation_d_ordre <- FAUX
echanger (arg1,arg2)
tempo <- arg1
arg1 <- arg2
arg2 <- tempo
(version C)
FAIRE
modifie <- FAUX
tete <- debut (liste)
TANT QUE (tete <> fin_de_liste)
FAIRE
si relation_d_ordre(tete,suivant)
alors
echanger (tete,suivant)
modifie=VRAI
tete=suivant(liste)
FAIT
TANT QUE (modifie)
(version Pascal)
FAIRE
non_modifie <- VRAI
tete <- debut (liste)
TANT QUE (tete <> fin_de_liste)
FAIRE
si relation_d_ordre(tete,suivant)
alors
echanger (tete,suivant)
non_modifie=FAUX
tete=suivant(liste)
FAIT
JUSQU'A (non_modifie)
TRI total (cas des listes)
Cas ou la relation d'ordre n'est pas transitive mais coherente
recherche<-debut de liste
TANT que (suivant(recherche) <> fin de liste)
FAIRE
FAIRE
tete <- suivant(recherche)
modifie <- FAUX
TANT QUE (tete <> fin_de_liste et non(modifie))
FAIRE
si relation_d_ordre(recherche,tete)
alors
echanger (recherche,tete)
modifie=VRAI
tete=suivant(liste)
FAIT
TANT QUE (modifie)
JUSQU'A (non_modifie)