====== TP 2.5 ====== Pour aller plus loin que le TP2. En est la suite directe. Nous allons implémenter deux tris rigolos. ===== Tri idiot ===== Implémentez le [[https://fr.wikipedia.org/wiki/Tri_stupide| tri stupide]] et vérifiez sa complexité pour des listes de petite taille. ===== Le tri par base ===== Le [[https://fr.wikipedia.org/wiki/Tri_par_base|tri par base (radix sort)]] est un tri utilisant l'écriture d'un nombre. Le but de cette partie est d'implémenter cet algorithme avec des nombres écrits en base 10. Pour mener à bien ce tri il faut plusieurs choses. ==== Connaitre l'écriture d'un nombre en base 10 ==== Pour cela on pourra transformer un nombre en chaine de caractère et accéder à ses chiffres. On pourra adapter le code suivant : x = 1234 x_chaine = str(x) print(len(x_chaine)) print(x_chaine[0]) print(x_chaine[-1]) ==== Même nombre de chiffre pour chaque nombre ==== Pour que le tri se passe sans soucis, il faut s'assurer que chaque nombre soit écrit avec le même nombre de chiffre, quit à ajouter des "0" en début de nombre. on pourra adapter le code suivant : chaine_ajustee = "a".rjust(10, "b") ==== ranger les nombre par rapport à une position ==== On pourra utiliser des dictionnaire avec comme clé un chiffre allant de "0" à "9" et en valeur une liste. On pourra de la adapter code suivant : rangement = dict() for i in range(10): rangement[str(i)] = [] x = 1234 x_chaine = str(x) position = -2 rangement[x_chaine[position]].append(x_chaine) print(rangement) ==== A vous ==== Utilisez les parties précédentes pour créer le codage par base.