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)