2. RI PAR SELECTION (1) TRfPAR
Trouver le rang du plus petit élément du tableau V
• trouver m tel que V[i] > V[m] ; Vi
Echanger l'élément V[m] avec V[i] 1=1 ! 2 î 1
JL
Reprendre le même processus; mais en considérant i=2 O
.5 L ! .?_. -1
uniquement la séquence des éléments V[2J, ..., V[n] ! 5 9 4
Lorsqu'on atteint une séquence constituée d'un seul 1=4 o i
-i-â-1 §L.i
T I
élément on s'arrête ! o i 2
• une séquence d'un seul élément est par définition triée ! o 2 4
ASD S) L. B. Romdhane; FSM.TN L5 C L. B. Romdhane; FSM.TN L6
RI PAR SELECTION (3) PAR SELECTION (4)
i
procédure triSelection (V: Tableau[n] d'entier) 1 ' Théorème - L'algorithme de tri par sélection admet
VAR i, k, ind_min, aux : entier une complexité de O(n2)
Début
Autre variante
Pour i de i à n-i faire
• Trouver m, le rang du plus grand élément du tableau V
ind_min<— i
Pour k de i+i à n faire • Echanger V[m] avec V[n]
si (V[k] < V[ind_min]) alors ind_min *- k • Reprendre le même processus; mais en considérant
Fin Si uniquement la séquence des éléments V[i], ..., V[n-i]
Fin Pour
• Jusqu'à atteindre une séquence d'un seul élémeet
aux <~- V]iJ, V{iJ <- Vjind_minJ^ Vjind_minJ <— aux
Fin Pour
<E> L. B. Romdbanc; FSM-TN O UB. Romdhane ;¥SM.TN
5. TRI PAR FUSION (1) • f
Tri Par Fusion Le principe du tri par fusion d'une scqueiu <• N
Merge Sort d'éléments est résumé comme su il
• Si 5est vide ou contient un seul élément; elle est
définition triée; donc on retourne S
• sinon
i. On divise S en deux séquences Si & Sz approximativement
de même taille (11/2)
^. Récursivement; on effectue le tri de Si et le tri de Sz
3. On fusionne Si & Sz, en une seule séquence triée
ASD
FUSION (.')
:l PAR FUSIOlvTfS)
> f
di , ,
'. •' J '•
II
appel récursif
diviser
I 12 j Séquences d'un élément :
appel récursif = ' plus d'appels récursifs p
appel récumf ^ -'" *'**?' «*"«•* Pour
cette branche de l'arbre
O L. B. Rondhcinc; KSM.TN
8. . H P e
P S ^ -J^f~. ,V.T^=^^^^_
TRI RAPIDE (1) JTRT=RAPIDE (2)
• I ,c principe du tri rapide d'une séquence S d'éléments est pivot
résumé comme suit
• Si S est vide ou contient un seul élément; elle est par
définition triée, donc retourner S partitionnement
• sinon
1. On choisit (aléatoirement) un élément de S comme étant le pivot
2. On divise S en trois séquences Si, 82, & Sj de la manière suivante
• Si contient tous les éléments inférieurs au pivot
appel récursif
• Sz contient tous les éléments égaux au pivot
• £3 contient tous les éléments supérieurs au pivot
3. Récursivement; trier Si & 83 3 Séquence d'un élément : plus d'appels
4. Concaténer dans cet ordre : Si, S2 & £3 récursifs pour cette branche de l'arbre
ASD 6 L. B. Romdhanc; FSM.TN L O L. B. Roiudhanc; FSM.TN L30
r^v^i^^^^;^^^^ - •• =--"=
^TftTRAPIDE (4)
pivot
12 9 20 3 15
partitionnement
ASD !.. B. Romdhanc; FSM.TN ASD L. B. Romdhanc; FSM.TN
10. TRI RAPIDE (9) ,omparaison
Division Concaténation
jimi-i'ilure DiviserPivot (V: Vecteur, pivot :
rlrmi-nt; InOut Vi, Vî, Vj : Vecteur)
fonction Concat (Vi, Vz, V% : Vecteur) :
Vecteur
|j|lï|ffliij>Iexité nioyentianj
VAK i, j, k. 1 : entier VAR i, j : entier
X : élément V : Vecteur
Début Début Sélection 0(n*) O(n2)
Pour i de i à taiile(V) faire
x <— savoir dem(V, i)
Pour i de i à taille(Vi) faire
x <_ savoir elem(Vt i)
Bulle 0(n*) O(n2)
si (x < pivot) alors i<-i«, V<- insérer(x, j, V)
vr^LérerKk.v.) «n Pour _
Insertion O(n*) 0(n>)
«non si (x > pivot) alors P°ur ' ^ 'a taille(V2) faire
)^_ j + t
V3 <- insérer(x, 1, V 3 )
x <- savoir_elem{Vz, i)
)<- i«. v <~ insérer(«, j, V)
Fusion O(n log(n)) 0(nlog(n)r
smon Fin Pour * divide & conquer
j<-j« Pour i de i à taillc(V3) faire
F'nS'
Fi"s' j< - J F - I , V<~ insércr(x,j, V)
Fin Pour
Rapide OM O(n log(n))
FinPour retourner (V) ' divide & conquer
Fln - Fin.
ASD 0 L. B. Roradhane; FSM.TN ' L37 ASD C L. B. Romdbanc; FSM.TN L 38