tri detaillé

10
8/16/2019 TRI Detaillé http://slidepdf.com/reader/full/tri-detaille 1/10  lgorithmes de TRI © L. B.  Romdhane Ph D DSI/FSM/  UM/  Tunisie NTRODU TION  1)  roblématique  Etant  donnée  une  séquence d objets  (un  vecteur),  ordonner les  éléments  de  cette séquence  en  ordre  croissant;  ou  décroissant  Pour résoudre  ce  problème nous avons besoin • d une  séquence  d éléments • tous les  éléments  sont du même  type • aucune  restriction  sur la  taille  de  cette séquence  sans perte  de  généralités, on  supposera  que le vecteur  est un tableau • une  fonction  de  comparaison  étant donné  deux  éléments;  elle  détermine  celui  plus petit (plus grand) • permet de  définir  une  relation  d ordre  sur les  élément 1 1). Km niHiunc;  FSM.TN L3 sommaire  Introduction • Tripar  sélection • Trià  bulle • Tri par  insertion • Tri par  fusion • Tri rapide  Comparaison L. B. RoradLaric;  FSM.TN Tri par  Sélection Sélection  ort  SD O  L. B.  Roradhane; FSM.TN

Upload: youssef-don-rajawi

Post on 05-Jul-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TRI Detaillé

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

Page 2: TRI Detaillé

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

Page 3: TRI Detaillé

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

Page 4: TRI Detaillé

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

Page 5: TRI Detaillé

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

Page 6: TRI Detaillé

8/16/2019 TRI Detaillé

http://slidepdf.com/reader/full/tri-detaille 6/10

Page 7: TRI Detaillé

8/16/2019 TRI Detaillé

http://slidepdf.com/reader/full/tri-detaille 7/10

Page 8: TRI Detaillé

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

Page 9: TRI Detaillé

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

Page 10: TRI Detaillé

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