Vous êtes sur la page 1sur 3

Algorithmique

algorithmes de tri, correction, terminaison, coût TD/TP

Algorithmes de tri sélection, tri insertion, tri bulle

Tri insertion
Pour i allant de 1 jusqu’au dernier indice du tableau
j prend la valeur de i
Tant que j est plus grand que 0 et que l’élément à l’indice j est plus petit que l’élément à l’indice j-1
interchanger l’élément à l’indice j et celui à l’indice j-1
j est décrémenté de 1
fin TantQue
fin Pour

Tri sélection
Pour i allant de 0 jusqu’à l’avant dernier indice du tableau
indice_min prend la valeur de i
Pour j allant de i jusqu’au dernier indice du tableau
Si l’élément à l’indice j est plus petit que l’élément à l’indice indice_min Faire
indice_min prend la valeur de j
Interchanger les éléments situés à l’indice i et à l’indice indice_min
fin Pour
fin Pour

tri Bulle
pour i allant du dernier indice du tableau à 1 faire
pour j allant de 0 à i-1 faire
si tab[j] > tab[j+1] faire
permuter tab[j+1] et tab[j]
fin si
fin pour
fin pour

Question 1
On veut simuler le déroulement du tri par ces trois algorithmes du tableau tab = [12,3,9,6,7]
Donner l’état du tableau à la fin de chaque tour de la boucle principale.
Tri insertion tri sélection tri bulle
i tab i tab i tab
[12, 3, 9, 6, 7] [12, 3, 9, 6, 7] [12, 3, 9, 6, 7]

Question 2
On veut simuler le déroulement du tri par ces trois algorithmes du tableau tab = [1,2,5,3,4]
Donner l’état du tableau à la fin de chaque tour de la boucle principale.

2 - TD tri déroulement élève 5 2024.odt 1/3 15/02/24 - v1.11 - l. Coutelier


Algorithmique
algorithmes de tri, correction, terminaison, coût TD/TP

Tri insertion tri sélection tri bulle


i tab i tab i tab
[1, 2, 5, 3, 4] [1, 2, 5, 3, 4] [1, 2, 5, 3, 4]

Question 3
On veut simuler le déroulement du tri par ces trois algorithmes du tableau tab = [29,15,13,7,4]
Donner l’état du tableau à la fin de chaque tour de la boucle principale.
Tri insertion tri sélection tri bulle
i tab i tab i tab
[29,15,13,7,4] [29,15,13,7,4] [29,15,13,7,4]

Question 4
Traduire ces trois algorithmes en python dans des fonctions prenant en paramètre un tableau tab à trier. Le
tableau est trié en place, les fonctions ne renvoient rien.
Placer des print de manière judicieuse pour suivre l’état du tableau à la fin de chaque tour de la boucle
principale et tout autre variable que vous jugerez nécessaire.
Pour les tests, vous devez créer des listes à trier identiques en valeur mais différentes en adresse (ne pas
confondre avec un nom de variable différent). On peut, par exemple, pour les listes à une dimension, utiliser la
fonction liste() pour dupliquer les valeurs en séparant les adresses, sinon, on peut aussi recopier intégralement
les valeurs lors de la création des différentes listes à trier.

Question 5
Faire les tests des 3 tableaux pour les trois algorithmes.

Question 6
On veut mesurer et comparer la rapidité des algorithmes avec le module time.
Pour générer aléatoirement un tableau d’entier, on peut utiliser le générateur suivant (nombres entre 0 et
65535) :
liste = [random.randint(0,65535) for _ in range(100)] # pour 100 entiers

Attention : il faut supprimer tous les print() affichant les valeurs du tableau car ils ralentissent l’exécution
des programmes. Ils ne sont plus nécessaires car on sait que les programmes fonctionnent. On veut juste
connaître la rapidité du tri.

2 - TD tri déroulement élève 5 2024.odt 2/3 15/02/24 - v1.11 - l. Coutelier


Algorithmique
algorithmes de tri, correction, terminaison, coût TD/TP

Le module time permet de chronométrer le temps en secondes mis pour qu’un script python fasse son calcul.
Exemple :

import time

def ... # Les différentes fonctions de tri


t1 = time.time()
# exécution du tri
...
...
t2 = time.time()
print(t2-t1)

... # script principal : exécution des 3 tris des listes identiques

Comparez la rapidité des algorithmes de tri par sélection, insertion et bulle en complétant le tableau.

Taille d’entrée 5 000 10 000 15 000 20000 25000 30 000


Tri Insertion
Tri Sélection
Tri bulle

Question 7
Comparez la rapidité de ces tris pour une liste triée et pour une liste triée mais inversée.

exemple de générateurs :
liste=[i for i in range(1000] (tableau déjà trié)
liste=[i for i in range(1000, 0, -1)] (tableau à l’envers)

tableau déjà trié


Taille d’entrée 5 000 10 000 15 000 20000 25000 30 000
Tri Insertion
Tri Sélection
Tri bulle

Tableau à l’envers
Taille d’entrée 5 000 10 000 15 000 20000 25000 30 000
Tri Insertion
Tri Sélection
Tri bulle

Question 8
En utilisant un tableur, pour les différentes situations de tri, tracer la courbe de évolution de la complexité
temporelle en fonction de la taille n des données et chercher l’équation de cette courbe.
Conclure sur la complexité temporelle de ces trois algorithmes.

2 - TD tri déroulement élève 5 2024.odt 3/3 15/02/24 - v1.11 - l. Coutelier

Vous aimerez peut-être aussi