Objectif
Trier les éléments d'une liste par ordre croissant en utilisant une boucle bornée et une boucle non bornée. Le premier essai est de mon cru, le second ne l'est pas.
Premier script
Etape 1 - Présentation du principe
- Prendre le premier élément.
- Comparer cet élément avec chaque élément restant dans la liste
- Si plus grand alors permuter
- Ajouter l'élément final à la liste triée
Etape 2 - Application du tri pour le premier élément de la liste
l=[7,2,1,4,2,8,7,9,3,2,5]
tri=[]
print(l,tri)
print("****")
a=l[0]
l.pop(0)
for i in range(len(l)):
if a>l[i]:
a,l[i]=l[i],a
tri.append(a)
print(l,tri)
Etape 3 - La magie de python
Script final
l=[7,2,1,4,2,8,7,9,3,2,5]
tri=[]
print(l,tri)
print("****")
while len(l)>0:
a=l[0]
l.pop(0)
for i in range(len(l)):
if a>l[i]:
a,l[i]=l[i],a
tri.append(a)
print(l,tri)
Second script
Sur le net j'ai trouvé cet algorithme. Ici l'idée est de sélectionner un élément de la liste puis de le comparer aux éléments d'avant. S'il est plus petit alors il remonte...
Saurez vous le scipter ;))) - L'algorithme se trouve en dessous de cette image.
Algorithme du tri ici
Tri par insertion - ceci n'est pas un script !
Données
L: liste d'entiers
a,i,j: entiers
Début
Pour i variant de 1 à len(L)
Faire
a <- L[i]
j <- i
Tant que j>0 et L[j-1]>a
Faire
L[j] <- L[j-1]
j <- j-1
Fin faire
L[j] <- a
Fin faire
Retourner L
Fin
Ne trichez pas - correction ici