BTS-SIO
2.1.3 Tri par insertion
Algorithm 3 Tri par insertion
Entr´ees: listeL
Sorties: listeL
n←taille(L)
pour {i= 2 jusqu’`a n;incr´ement 1}faire
x←L[i]
j←i
tantque j > 1et L[j−1] > x faire
L[j]←L[j−1]
j←j−1
fin tantque
L[j]←x
fin pour
2.2 Exercice
1. Pour chaque algorithme de tri lent, donner les ´etapes du tri de la liste L= [1; 5; 2; 4; 6; 2; 9; 0].
2. Traduire ces algorithmes en langage Python et compl´eter par la lecture des ´etapes du tri et en donner le
nombre d’´etapes.
3. Tester vos ´etapes de la question 1 en appliquant la liste Ld´efinie au d´ebut de l’exercice. (vous devez
retrouver la r´eponse `a la question 1).
4. Tester chaque algorithme avec une liste de 100 entiers choisis au hasard (la comparaison doit se faire
avec la mˆeme liste).
2.3 Tris rapides
2.3.1 Tri de Shell
Le tri de Shell est propos´e par Donald L.Schell en 1959, il est une variante ou une am´elioration du tri par
insertion.
En effet, le tri par insertion permet d’ins´erer terme `a terme un nouvel ´el´ement de la liste principale, dans la
pr´e-liste d´ej`a tri´ee :
Exemple :
Au cours du tri par insertion de la liste principale L= [1; 5; 2; 4; 6; 2; 9; 0], on obtient la liste suivante
L= [1 ;2 ;5; 4; 6; 2; 9; 0] la partie en gras ´etant la pr´e-liste d´ej`a tri´ee, il reste `a trier la suite de la liste.
L’algorithme par insertion lit la valeur 4 qui suit la pr´e-liste et l’ins`ere au bon endroit dans la pr´e-liste ce qui
donne `a l’´etape suivante la liste L= [1 ;2 ;4 ;5; 6; 2; 9; 0].
L’algorithme de Shell tri sur le mˆeme principe la liste L, mais plutˆot que de prendre les ´el´ements avec un pas
de 1, il utilise un pas plus grand que 1 qui diminue au fur et `a mesure de l’algorithme.
2.3.2 Exercice : pas de l’algorithme de Shell
Soit la suite ud´efinie pour tout entier npar un+1 = 3un+ 1, avec u0= 0.
1. Calculer u1,u2.
2. On admet que pour tout entier n,unest un entier. Montrer que pour tout entier n,EN T un+1
3=un.
3. Montrer que la suite un’est ni arithm´etique, ni g´eom´etrique.
4. On cherche l’expression de unen fonction de n. Soit la suite vtelle que pour tout entier n,vn=un+ 0.5
(a) Montrer que la suite vest g´eom´etrique, vous pr´eciserez la raison de la suite v.
(b) En d´eduire l’expression de unen fonction de n.
S.Mirbel page 2 / 3