Informatique TD/ TP 4.1 Tri par insertion
Lycée Jules Ferry Cannes Page 2 sur 2 TSI2
2 Tri par insertion
On donne les algorithmes suivant
Algorithme Tri par insertion
Entrées : liste T (tableau de n nombres; n≥ 2)
Sortie : liste T triée par ordre croissant
Pour i de 1 à n-1 faire
x←T[i]
j← i
Tant que j> 0 et T[j-1] > x faire
T[j] ←T[j-1]
j← j-1
Fin Tant que
T[j] ←x
Fin Pour
Renvoyer T
Fin de Tri par insertion
def Tri_insertion (T):
# Entrée : liste T de n nombres (n≥ 2)
# Sortie : liste T triée par ordre croissant
n = len(T)
for i in range(1,n): # tri de T
x = T[i]
j = i # j : position triée pour x
while j>0 and T[j-1] > x :
T[j] = T[j-1]
j = j - 1
T[j] = x
return T
5) Convertir l'algorithme donné sous forme de pseudo code en une fonction Tri_insertion en python.
6) Compléter la description suivante en décrivant la dernière itération.
partant d’un tableau t de taille n ≥ 2 :
on insère t[1] dans le sous-tableau t[0 : 1] = [t[0]]
on insère t[2] dans le sous-tableau t[0 : 2] = [t[0], t[1]] (qui est trié)
…
on insère t[n-1] dans le sous-tableau t[0:n-2] = [t[0], t[1]…t[n-2]] qui est trié
7) Compléter le tableau suivant qui décrit l'évolution du tri par l'algorithme Tri_insertion.
Sur le tableau t = [5; 2; 3; 1; 4], l’algorithme est :
t=[5,2,3,1,4]
On insère t[1] = 2 dans t[0 : 1]
t=[2,5,3,1,4]
On insère t[2] = 3 dans t[0 : 2]
t=[2,3,5,1,4]
On insère t[3] = 1 dans t[0 : 3]
t=[1, 2,3,5,4]
On insère t[4] = 4 dans t[0 : 4]
t=[1,2,3,4,5]
8) Compléter le tableau suivant décrivant l'effet de l'algorithme. Préciser la séquence de l'algorithme
qui produit les décalages vers la droite.
Soit t = [7, 10, 21, 31, 45, 11, 8, 1] (de longueur n = 8).
Pour insérer la valeur t[5] = 11 dans t[0 : 5] = [7, 10, 21, 31, 45].
On stocke la valeur 11 ailleurs t = [7, 10, 21, 31, 45,11, 8,1]
On décale la valeur 45 à droite t = [7, 10, 21, 31, 45,45, 8, 1]
On décale la valeur … à droite
t = [7, 10, 21, 31, 31, 45, 8, 1]
On décale la valeur …. à droite
t = [7, 10, 21, 21, 31, 45, 8, 1]
On place la valeur….
t = [7, 10, 11, 21, 31, 45, 8, 1]