tri detaillé
TRANSCRIPT
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 1/10
lgorithmes de TRI
© L. B. Romdhane
Ph D
D S I / F S M / U M / Tunisie
NTRODU TION 1)
• roblématique E t a n t
d o n n é e
une séquence
d objets
(un
v e c t eu r ),
o r d o n n e r les é léments d e cette
séquence
en o r d r e c r o i s s an t ; o u
décroissant
•
Pour résoudre
ce
problème nous avons besoin
• d une
séquence
d é l é m e n t s
• tous les é l émen t s s on t du m ême t ype
• a u c u n e r e s t r i c t i o n sur la t a i l l e de ce t te séquence
•
sans perte
de
génér a l i t é s ,
on
supposera
que le
vec teur
est un
t ab l eau
• une fonction de comparaison
• é t a n t d o n n é
d e u x
é l é m e n t s ; elle d é t e r m i n e
ce lu i
p lus pet i t
(plus g r a n d )
• pe rm e t de d é f i n i r une
r e l a t i o n
d o rd re sur les é l ément
1
1 ) . K m n i H i u n c ; F S M . T N
L3
sommaire
• In t roduct ion
• Tri par
sélection
• Tri à
bulle
• Tri par insertion
• Tri par
fus ion
• Tri rapide
• Compara ison
L. B. R o r a dL a r i c ;
FSM.TN
Tri par
Sélection
Sélection ort
S D
O L. B. Roradhane ; FSM.TN
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 2/10
RI PAR
SELECTION
1)
Trouver
le rang du plus
petit
élément du tableau V
• trouver m tel que V[ i ] > V [m] ; V i
Echanger
l'élément
V[m] avec V[i]
Reprendre le même processus; mais en considérant
uniquement la séquence des éléments V[2J ,
..., V[n]
Lorsqu'on atteint
une séquence
constituée d'un seul
élément
on
s'arrête
• une
séquence d'un seul élément
est par
définition triée
AS D S
L. B . Romdhane;
FSM.TN L5
RI PAR SELECTION 3)
procédure triSelection
(V :
Tab leau[n] d entier)
VA R i, k,
ind_min,
aux : ent ier
Début
Pour i de à
n-i
faire
i n d _ m i n —
i
Pour k de
i+ i
à n
faire
si (V[k]
<
V[ ind _ m in ] ) alors ind_min -
k
Fin
Si
Fin P o u r
a u x
< ~
V]iJ,
V { i J <-
Vj ind_minJ^ Vjind_minJ < —
a u x
Fin Pour
E L.
B.
Romdbanc;
FSM TN
TRfPAR
1=1 2
i=2 O
1= 4
o
o
o
JL
.5
L
5
i
i
.?_.
9
4
i â§L i
I
2
2
4
C L. B. R o m d h a n e ; FSM.TN
L6
PAR SELECTION
4)
héorème -
L'algorithme
de tri par
sélection
admet
une complexité de O(n
2
)
Autre variante
• Trouver m, le rang du
plus grand élément
du tableau V
• Echanger V[m] avec V[n]
• Reprendre le même processus; mais en considérant
uniquement la séquence des éléments V[i],
...,
V[n-i]
•
Jusqu'à atteindre
une
séquence d'un seul
élémeet
O UB. Romdhane ;¥SM.TN
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 3/10
Tri à ulle
ubble
Sort
AS D
© L. B.
R o m d h a n e ;
FSM.TN
L 9
R I
A BULLE (2)
parcours nurn
parcours nuni
V = [z; i;
i;
5; o; 9; 4]
lrl| _
f
f
. .
i = 5 Î , . ° 2 L _ l _ l _ 5 _ _ l - - 9 _ .
V =
U ; i ;
i;
5 ; 0 5 9 ;
4 ]
prT pTTfT^ v ii ^• -T -—
i
= o
i
o 5
1
4 î 9
1
-----
*._rl._4.-- -_<
—
_
i = 3 o
2 4 5 9
ASD
0
L. B. Roradhane;
FSM.TN
L U
RI A
BULLE
(1)
•
Parcourir
le
tableau
et
comparer deux éléments
consécutifs en les échangeant s'ils ne sont pas dans le
bon ordre
• Ainsi, à la f in du parcours, on trouvera le plus grand
élément
à la fin du
tableau
•
Reprendre
le
même processus avec
la
séquence V[o],
V[i],...,V[n-i]
• On
s'arrête lorsqu'on atteint
une
séquence contenant
un seul élément
AS D
© L. B. R o m d h a n c ; F S M . T N
L 1 0
R I A BULLE (3 )
procédure triBulle
(V:
Tableau[n]
d entier)
V AR permut : booléen; k, aux, p : entier
Début
permut<—
Vrai, p < —
n-i
TantQue
(permut) Faire
permut
< —
F a u x
Pour
i de
i
à p faire
Si V [ i ] > V [ i + i ] ) alors
aux^-
V[i],V[i]^- V [ i + i ] , V [ i + i ] «- aux
permut
< —
Vra i
Fin Si
Fin
Pour
p<-p-i
Fin
TantQue
Fin.
AS D
e L B R o m d h a n c ;
F S M . T N
L12
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 4/10
ri par
nsertion
Insertion Sort
AS D
€ L. B. Romdhane;
FSM.TN
RI PAR INSER TION 1)
Supposons que nous avons réussi à trier les k premiers
éléments de la séquence
séquence triée
séquence non encore triée
• Ainsi, on augmente la taille de la séquence triée en lui
ajoutant
le premier
élément
de la séquence non triée;
mais en
l insérant directement dans
sa
bonne place
séquence
non encore
triée
© L. B. Romdhane;
FSM.TN
R I
PAR
INSERTION
2)
i n s é r e r 6
i n s é r e r 4
i n s é r e r 9
4 6
9 5 2
9
2
insérer
i n s é r e r
5
i n s é r e r 2
R I PAR INSERTION 3)
pro édure trilnsertion
(V : Tableau[n] d entier)
V AR permut :
booléen;
k,
aux,
p :
entier
Début
Pour
i de i à n-i) faire
j f i
TantQue
V [ j ]
> x) ET j >o ) ) faire
Fin
TantQue
x
Fin Pour
Fin.
ASD
D
L . B . K o i u d h a n e ;
K S M . T N
1 15 AS D
» L. B. R o m d b a n c ; FSM.TN
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 5/10
Tri Par
usion
erge Sort
FUSION ( . )
f
.
i
\
L. B.
R o n d h c i n c ; KSM.TN
TRI PAR
FUSION
1)
A SD
L e
principe
d u t r i p a r
f u s i o n
d ' u n e
s c q u e i u
•
N
d'éléments e s t
résumé c o m m e
s u
i l
•
Si 5est
vide ou contient un seul
é l ém e n t ;
elle
e st
déf in i t ion
tr iée ; donc
on
r e t o u r n e S
•
sinon
O n
divise S en
d e u x s éq u e n c e s
Si
Sz a p p r o x i m a t iv e m e n t
de même ta i l le
(11/2)
Récur s ivemen t ; on
effec tue
le tri d e Si et le t r i de Sz
3 On
fusionne
S i
S z
en une seule
séquence
triée
:l PAR FUSIOlvTfS)
appel
récursif
d i v i s e r
a p p e l r é c u r s i f
I
1 2 j
S é que nc e s
d ' u n
élément
:
= '
plus d ' ap p e l s
récu r s i f s
p
cet t e branche
d e
l ' a rb r e
p p e l récumf
- * **?
«* «•* P o u r
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 6/10
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 7/10
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 8/10
TR I RAP IDE 1)
• I ,c
princ ipe
du tri
rapide d une séquenc e
S
d éléments
est
résumé comme
suit
• Si
S
est
vide
ou
co ntient
un
seul élément;
elle
est par
définition
triée,
donc retourner
S
•
sinon
On choisit (aléatoirement) un élément de S c omm e étant
le
pivot
2 . On divise S en trois séquenc es Si 82
Sj
de la manière suivante
•
Si
contient tous les
éléments inférieurs
au
pivot
•
Sz c ontient tous les éléments
égaux
au pivot
•
£3 c ontient tous les éléments sup érieu rs au pivot
3 . Récursivement; trier S i 83
4
. Conc aténer dans
c et
ordre
:
Si S2
£3
ASD
L B. R o m dha nc ; FSM.TN L
pivot
12 9 20 3 15
AS D
partitionnement
..
B
R o m d h a n c ; FS M .TN
PP
e
^
J~ VT=^_
J
TRT
=
RAPIDE 2)
pivot
partitionnement
appel récursif
3 Séquenc e d'un élément : plus d'app els
récursifs pour c ette branche de l arbre
O
L B Roiudhanc;
FSM.TN
r v i - • • = - - =
^TftTRAPIDE
4)
L30
AS D L B R o m dha nc ;
FSM.TN
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 9/10
TRI
RAPIDE 5)
12 9 2 5
c
appel récursif
appel récui sif
j j
S LJ
concaténation
A S D
© L B R o n > d h : i i i c ;
K S M . I N
TRTRÂPIDE
7)
concaténation
AS D
©
L . B . R o m d h a n e ; F S M . T N
S
12 9 6 20 3 15
c onc a t é na t i on
©
L
B .
R o m d h a n e ; FS M .T N
RI
RAPIDE 8)
fonction tri apide V: Vecteur) : Vecteur
VAR
Vi, Vz, V3
:
Vecteur
m : élément
Début
Si (taille(V) o) ou (taille(V) = i )) alors
retourner (V)
Sinon
m
—
choisirPivot(V)
DiviserPivot(V,
m
Vi, Vz, V
3
)
i<- triRapide Vi)
V3 - triRapide V3)
V<-
concat(Vi,
V 2> V3)
Retourner
(V)
FinSi
Fin.
££
AS D
© L . B .
R o m d h a n e ;
FSM.TN
L
8/16/2019 TRI Detaillé
http://slidepdf.com/reader/full/tri-detaille 10/10
TRI
RAPIDE
9)
v s o n
onc tén tion
,omparaison
jimi-i ilure DiviserPivot (V : Vecteur, pivot : fonction Concat (Vi, Vz , V : V ecteur) :
rlrmi-nt; InOut
Vi, Vî,
V j
:
Vecteur) Vecteur
V A K
i , j , k. 1 :
e n t i e r
V A R i , j :
entier
X : é l é m e n t V : V e c t e u r
D é b u t Début
Pour i de i à t a i i l e V )
faire
Pour i de i à
t a i l le V i ) faire
x < — s a v oi r d e m V , i )
x< _
savoir e lem Vt i)
si x < p iv o t ) alors i<-i«, V < -
i ns é r e r x ,
j , V )
vr^LérerKk.v.) «nPour
«non
si (x
>
p iv o t ) alors P°
ur
'
a
t a i l l e V 2 )
faire
^ _ j +t x < -
s a v o i r _e l e m{ Vz ,
i)
V
3
< - i ns é r e r x , 1 V 3) )<- i«. v< ~ in s ér e r « ,
j , V )
smon Fin
Pour
j<-j« Pour i de
i
à taillc(V3) faire
Fi
s
' j < - J F - I V < ~ i n s é r c r x , j ,
V
F
'
nS
'
Fin Pour
inPour retourner
(V)
Fln
- Fin.
A SD 0 L. B. R orad h an e ;
FSM .TN
' L37
Sélection
Bulle
Inser tion
Fusion
* divide conquer
Rapide
'
divide
conquer
A SD
0(n*)
0(n*)
O(n*)
O (n
log(n))
O M
C L. B.
R o m d b a n c ; FSM.TN
|j|lï|ffliij>Iexité
nioyentianj
O (n
2
)
O (n 2)
0(n>)
0(nlog(n)r
O (n
log(n))
L3
8