BTS-SIO
Algorithmes de tris
Travaux pratiques
1 D´efinition
Une liste Lde nnombres est dite tri´ee si tous les nombres sont rang´es dans l’ordre croissant. On d´efinit une
bijection de la liste Lvers la liste Lrang´ee.
Exemple : L= [1; 5; 2; 4; 6; 2; 9; 0] donnera [0; 1; 2; 4; 5; 6; 2; 9].
2 Exemples d’algorithmes de tri
2.1 Tris lents
2.1.1 Tri `a bulle
Algorithm 1 Tri `a bulle
Entr´ees: listeL
Sorties: listeL
ntaille(L)
tri=vrai
tantque tri=vrai faire
tri=faux
pour {i= 1 jusqu’`a n1 ; incr´ement 1}faire
si L[i]> L[i+ 1] alors
´echanger L[i] avec L[i+ 1]
tri=vrai
finsi
fin pour
fin tantque
2.1.2 Tri par s´election
Algorithm 2 Tri par s´election
Entr´ees: listeL
Sorties: listeL
ntaille(L)
pour {i= 1 jusqu’`a n;incr´ement 1}faire
min i
pour {j=i+ 1 jusqu’`a n;incr´ement 1}faire
si L[j]< L[min]alors
min j
finsi
fin pour
si min 6=ialors
´echanger L[i] avec L[min]
min i
finsi
fin pour
S.Mirbel page 1 / 3
BTS-SIO
2.1.3 Tri par insertion
Algorithm 3 Tri par insertion
Entr´ees: listeL
Sorties: listeL
ntaille(L)
pour {i= 2 jusqu’`a n;incr´ement 1}faire
xL[i]
ji
tantque j > 1et L[j1] > x faire
L[j]L[j1]
jj1
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
BTS-SIO
5. Si nest la taille de la liste L`a trier, donner un algorithme qui d´etermine les termes de la suie uplus
petits que n. Appliquer l’algorithme pour n= 100.
La suite uet l’algorithme de la derni`ere question d´etermine les pas `a utiliser dans l’algorithme de Shell pour
trier une liste L.
Algorithm 4 Tri de Shell
Entr´ees: listeL
Sorties: listeL
ntaille(L)
pas 0
tantque pas < n faire
pas 3n+ 1
fin tantque
tantque pas 6= 0 faire
pas ENT pas
3
pour {i=pas jusqu’`a n1 ; incr´ement 1}faire
xL[i]
ji
tantque j > pas 1et L[jpas]> x faire
L[j]L[jpas]
jjpas
fin tantque
L[j]x
fin pour
fin tantque
2.3.3 Exercice
1. Pour l’algorithme de tri rapide propos´e, donner les ´etapes du tri de la liste L= [1; 5; 2; 4; 6; 2; 9; 0].
2. Traduire cet 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 cet algorithme avec une liste de 100 entiers choisis au hasard, comparer avec les algorithmes de tri
lent (la comparaison doit se faire avec la mˆeme liste).
2.4 Autres algorithmes de tri rapide
Il existe d’autres algorithmes de tri rapides, comme celui par fusion, tri par tas par exemples. Leur efficacit´e
d´epend de la m´emoire utiliser pour ces tris, et du nombres d’´etapes pour r´ealiser le tri.
S.Mirbel page 3 / 3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !