13-trirec.pptsite.uottawa.ca/~laganier/csi2510/csi2510trirec.pdf · title: microsoft powerpoint -...

21
Recursive Sort 11/6/2013 12:56 PM CSI2510 1 CSI2510 1 Tri Plus efficace CSI2510 2 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement sur ces plus petites séries de données. Ceci est appelé le paradigme Diviser pour régner (Divide-and-Conquer). Nous verrons deux tris récursifs: tri par fusion (Merge Sort) tri rapide (Quick Sort) CSI2510 3 Divide-and-Conquer Paradigme diviser pour régner : Diviser: Si la taille des données est trop grande pour les traiter d’une façon directe alors les diviser en deux ou plusieurs sous-ensembles disjoints. Appliquer récursivement: Utilisez l’approche diviser pour régner afin de résoudre les sous-problèmes associés aux sous-ensembles de données. Régner: Prendre les solutions aux sous-problèmes et “fusionner” ces solutions afin d’obtenir la solution au problème initial. Le cas de base pour la récursivité est le sous-problème trivial, souvent de taille 0 ou 1. CSI2510 4 Tri par fusion (Mergesort)

Upload: others

Post on 18-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 1

CSI2510 1

Tri Plus efficace

CSI2510 2

Tri récursif

Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement sur ces plus petites séries de données. Ceci est appelé le paradigme Diviser pour régner (Divide-and-Conquer).

Nous verrons deux tris récursifs:

�tri par fusion (Merge Sort)�tri rapide (Quick Sort)

CSI2510 3

Divide-and-ConquerParadigme diviser pour régner :� Diviser: Si la taille des données est trop grande pour

les traiter d’une façon directe alors les diviser en deux ou plusieurs sous-ensembles disjoints.

� Appliquer récursivement: Utilisez l’approche diviser pour régner afin de résoudre les sous-problèmes associés aux sous-ensembles de données.

� Régner: Prendre les solutions aux sous-problèmes et “fusionner” ces solutions afin d’obtenir la solution au problème initial.

Le cas de base pour la récursivité est le sous-problème trivial, souvent de taille 0 ou 1.

CSI2510 4

Tri par fusion (Mergesort)

Page 2: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 2

CSI2510 5

Tri par fusion

Le tri par fusion est un algorithme de tri basé sur le paradigme diviser pour régnerComme le tri par tas� Il utilise un comparateur� Il est exécuté en un temps O(n log n)

Contrairement au tri par tas� Il n'utilise pas une file à priorité auxiliaire � Il accède aux données d’une manière

séquentielle (convenable pour trier des données sur un disque)

CSI2510 6

Tri par fusionLe tri par fusion sur une séquence d'entrée S avec n éléments consiste en trois étapes:

� Diviser: diviser S en 2 groupes d’environ n/2 éléments chacun

� Appliquer récursivement : trierrécursivement S1 et S2

� Régner: fusionner S1 et S2 dans une séquence triée

CSI2510 7

Fusion de deux séquences triées :

L’étape ‘Régner’ fusionne les 2 séquences triées A etB dans une séquence trié SComment? Comparer l'élément le plus petit de A etcelui de B et insérer le plus petit dans SLa fusion des deux séquences triées, chacune avecn/2 éléments prend un temps O (n)

CSI2510 8

Tri par fusionAlgorithm mergeSort(S, C)

Input séquence S avec n éléments,

comparateur C

Output séquence S triée selon C

if S.size() > 1

(S1, S2) ← partition(S, n/2)

mergeSort(S1, C)

mergeSort(S2, C)

S ← merge(S1, S2,C)

Page 3: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 3

CSI2510 9

2 5 6 9 12 15 20 27

4 7 10 13 16

2 4 5 6

A

B

S

CSI2510 10

Fusion de deux séquences triéesAlgorithm merge(A, B,C)

Input séquences triées A et B

comparateur C

Output séquence triée de A ∪ B

S ← séquence vide

while !A.isEmpty() ∧∧∧∧ !B.isEmpty()

if C.isLessThan(A.first().element(), B.first().element())

S.insertLast(A.remove(A.first()))

else

S.insertLast(B.remove(B.first()))

while !A.isEmpty()

S.insertLast(A.remove(A.first()))

while !B.isEmpty()

S.insertLast(B.remove(B.first()))

return S

CSI2510 11

Arbre de tri par fusion

7 2 9 4 →→→→ 2 4 7 9

7 2 →→→→ 2 7 9 4 →→→→ 4 9

7 →→→→ 7 2 →→→→ 2 9 →→→→ 9 4 →→→→ 4

L’exécution du tri par fusion est représenté comme un arbre binaire� chaque nœud représente un appel récursif du tri par fusion et

emmagasine � la séquence non triée avant l'exécution et sa partition� La séquence triée à la fin de l'exécution

� la racine représente l’appel initial� les enfants sont les appels pour les sous-séquences � les feuilles sont les appels pour les séquences de taille 0 ou 1

CSI2510 12

Tri par fusion – Exemple1

Partition

7 →→→→ 7 2 →→→→ 2 9 →→→→ 9 4 →→→→ 4 3 →→→→ 3 8 →→→→ 8 6 →→→→ 6 1 →→→→ 1

7 2 9 4 3 8 6 1

12CSI2510 - Aut.09 - Tris recursifs

Page 4: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 4

CSI2510 13

Appel récursif + partition

7 2 9 4

7 2 9 4 3 8 6 1

13CSI2510 - Aut.09 - Tris recursifs

Tri par fusion – Exemple1

CSI2510 14

7 2 9 4

7 2

7 2 9 4 3 8 6

14CSI2510 - Aut.09 - Tris recursifs

Tri par fusion – Exemple1

Appel récursif + partition

CSI2510 15

7 2 9 4

7 2

7 →→→→ 7

7 2 9 4 3 8 6 1

15CSI2510 - Aut.09 - Tris recursifs

Tri par fusion – Exemple1Appel récursif + appel de base

CSI2510 16

7 2 9 4

7 2

7 →→→→ 7 2 →→→→ 2

7 2 9 4 3 8 6 1

16CSI2510 - Aut.09 - Tris recursifs

Tri par fusion – Exemple1Appel récursif + appel de base

Page 5: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 5

CSI2510 17

Fusion

7 2 9 4

7 2 →→→→ 2 7

7 →→→→ 7 2 →→→→ 2

7 2 9 4 3 8 6 1

17CSI2510 - Aut.09 - Tris recursifs

Tri par fusion – Exemple1

CSI2510 18

Appel récursif, …, appel de base, fusion

7 2 9 4

7 2 →→→→ 2 7 9 4 →→→→ 4 9

7 →→→→ 7 2 →→→→ 2 9 →→→→ 9 4 →→→→ 4

7 2 9 4 3 8 6 1

18CSI2510 - Aut.09 - Tris recursifs

Tri par fusion – Exemple1

CSI2510 19

Fusion

7 2 9 4 →→→→ 2 4 7 9

7 2 →→→→ 2 7 9 4 →→→→ 4 9

7 →→→→ 7 2 →→→→ 2 9 →→→→ 9 4 →→→→ 4

7 2 9 4 3 8 6 1

19CSI2510 - Aut.09 - Tris recursifs

Tri par fusion - Example

CSI2510 20

7 2 9 4 →→→→ 2 4 7 9 3 8 6 1 →→→→ 1 3 8 6

7 2 →→→→ 2 7 9 4 →→→→ 4 9 3 8 →→→→ 3 8 6 1 →→→→ 1 6

7 →→→→ 7 2 →→→→ 2 9 →→→→ 9 4 →→→→ 4 3 →→→→ 3 8 →→→→ 8 6 →→→→ 6 1 →→→→ 1

7 2 9 4 3 8 6 1

20CSI2510 - Aut.09 - Tris recursifs

Tri par fusion - Example

Appel récursif, …, appel de base, fusion

Page 6: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 6

CSI2510 21

Fusion

7 2 9 4 →→→→ 2 4 7 9 3 8 6 1 →→→→ 1 3 8 6

7 2 →→→→ 2 7 9 4 →→→→ 4 9 3 8 →→→→ 3 8 6 1 →→→→ 1 6

7 →→→→ 7 2 →→→→ 2 9 →→→→ 9 4 →→→→ 4 3 →→→→ 3 8 →→→→ 8 6 →→→→ 6 1 →→→→ 1

7 2 9 4 3 8 6 1 →→→→ 1 2 3 4 6 7 8 9

21CSI2510 - Aut.09 - Tris recursifs

Tri par fusion – Exemple1

CSI2510 22

674523 14 6 3398 42

Tri par fusion – Exemple2

CSI2510 23

674523 14 6 3398 42

674523 14 6 3398 42

CSI2510 24

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

Page 7: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 7

CSI2510 25

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

CSI2510 26

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

Fusionner

CSI2510 27

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23

Fusionner

CSI2510 28

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398

23 98

Fusionner

Page 8: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 8

CSI2510 29

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

23 98

CSI2510 30

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Fusionner

23 98

CSI2510 31

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

14

Fusionner

23 98

CSI2510 32

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

45

Fusionner

23 98 14

Page 9: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 9

CSI2510 33

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Fusionner

98 451423

CSI2510 34

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Fusionner

98 14

14

23 45

CSI2510 35

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Fusionner

23 14

14 23

98 45

CSI2510 36

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Fusionner

23 98 4514

14 23 45

Page 10: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 10

CSI2510 37

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

Fusionner

23 98 4514

14 23 45 98

CSI2510 38

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

23 98 4514

14 23 45 98

CSI2510 39

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

23 98 4514

14 23 45 98

CSI2510 40

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

Fusionner

23 98 4514

14 23 45 98

Page 11: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 11

CSI2510 41

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

6

Fusionner

23 98 4514

14 23 45 98

CSI2510 42

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676

67

Fusionner

23 98 4514 6

14 23 45 98

CSI2510 43

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

23 98 4514 676

14 23 45 98

CSI2510 44

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676

14 23 45 98

Page 12: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 12

CSI2510 45

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

3323 98 4514 676

14 23 45 98

CSI2510 46

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

4223 98 4514 676 33

14 23 45 98

CSI2510 47

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 45 98

CSI2510 48

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 6 4233

14 23 45 98 6

67

Page 13: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 13

CSI2510 49

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 6 33

14 23 45 98 6 33

67 42

CSI2510 50

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 6 4233

14 23 45 98 6 33 42

67

CSI2510 51

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 45 98 6 33 42 67

CSI2510 52

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

23 45 98 33 42 6714 6

Page 14: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 14

CSI2510 53

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

23 45 98 6 42 67

6

14 33

CSI2510 54

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 45 98 6 42 67

6 14

23 33

CSI2510 55

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 98 6 42 67

6 14 23

45 33

CSI2510 56

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 98 6 33 67

6 14 23 33

45 42

Page 15: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 15

CSI2510 57

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 98 6 33 42

6 14 23 33 42

45 67

CSI2510 58

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 45 6 33 42

6 14 23 33 42 45

98 67

CSI2510 59

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67

CSI2510 60

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

Fusionner

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

Page 16: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 16

CSI2510 61

674523 14 6 3398 42

674523 14 6 3398 42

4523 1498

2398 45 14

676 33 42

676 33 42

23 98 4514 676 4233

14 23 45 98 6 33 42 67

6 14 23 33 42 45 67 98

CSI2510 62

674523 14 6 3398 42

6 14 23 33 42 45 67 98

CSI2510 63

Analyse du tri par fusion

profondeur #séqs taille

0 1 n

1 2 n////2

i 2i n////2i

… … …

Le hauteur h de l'arbre de tri par fusion est O(log n)

� à chaque appel récursif, nous divisons la séquence en deux La quantité de travail aux nœuds de profondeur i est O(n)

� on divise et fusionne 2i séquences de taille n////2i

� on fait 2i+1 appels récurrentsAinsi, le temps total d’exécution du tri par fusion est O(n log n)

CSI2510 64

Tri rapide (Quicksort)

Page 17: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 17

CSI2510 65

Tri rapideTri rapide est un algorithme de triage aléatoire basé sur le paradigme divide-and-conquer:� Diviser: choisir un élément au

hasard x (appelé le pivot) et partitionner S en sous-ensembles� L: les éléments plus petit que x� E: les éléments égaux à x� G: les éléments plus grand que x

� Appliquer récursivement : tri L et G

� Conquérir : fusionner L, E et G

x

x

L GE

x

CSI2510 66

i ← PIVOT

x ← S.elemAtRank(i)

(L,G) ← Partition(S,x)

QuickSort(L)

QuickSort(G)

QuickSort(S)

xS

x

L GE

CSI2510 67

PartitionNous partitionnons une séquence d'entrée comme suit :� Nous enlevons, un à un,

chaque élément y de S et � Nous insérons y dans L, E

ou G, dépendant du résultat de la comparaison avec le pivot x

Chaque insertion et suppression sont au début ou à la fin d'une séquence, et alors il prend un temps O (1) Ainsi, l'étape de partition du tri rapide prend un temps O(n)

Algorithm partition(S, p)

entrées séquence S, position p du pivot

sortie sous-séquences L, E, G des éléments de S plus petits que, égaux à,

ou plus grands que le pivot, resp.

L, E, G ← séquences vides

x ← S.remove(p)

while !S.isEmpty()

y ← S.remove(S.first())

if y < x

L.insertLast(y)

else if y = x

E.insertLast(y)

else { y > x }

G.insertLast(y)

return L, E, GCSI2510 68

Tri rapide - ArbreUne exécution du tri rapide est représentée par un arbre binaire:� Chaque nœud représente un appel récursif du tri rapide et

emmagasine:� La séquence non triée avant l'exécution et son pivot� La séquence triée à la fin de l'exécution

� La racine est l'appel initial� Les feuilles sont les appels sur les sous-séquences de taille 0 ou

1

7 4 9 6 2 →→→→ 2 4 6 7 9

4 2 →→→→ 2 4 7 9 →→→→ 7 9

2 →→→→ 2 9 →→→→ 9

68CSI2510 - Aut.09 - Tris recursifs

4 →→→→ 4 7 →→→→ 7

Page 18: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 18

CSI2510 69

Sélection du pivot7 2 9 4 3 7 6 1

69CSI2510 - Aut.09 - Tris recursifs

Tri rapide – Exemple1

CSI2510 70

Partition, appel récursif, sélection du pivot

2 4 3 1

7 2 9 4 3 7 6 1

70CSI2510 - Aut.09 - Tris recursifs

Tri rapide – Exemple1

CSI2510 71

2 4 3 1

1 →→→→ 1

7 2 9 4 3 7 6 1

71CSI2510 - Aut.09 - Tris recursifs

Tri rapide – Exemple1

Partition, appel récursif, appel de base

CSI2510 72

7 2 9 4 3 7 6 1

2 4 3 1 →→→→ 1 2 3 4

1 →→→→ 1 4 3 →→→→ 3 4

4 →→→→ 4

72CSI2510 - Aut.09 - Tris recursifs

Tri rapide – Exemple1

Appel récursif,…, appel de base, joindre, joindre

Page 19: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 19

CSI2510 73

7 9 7

7 2 9 4 3 7 6 1

2 4 3 1 →→→→ 1 2 3 4

1 →→→→ 1 4 3 →→→→ 3 4

4 →→→→ 4

73CSI2510 - Aut.09 - Tris recursifs

Tri rapide – Exemple1

Partition, appel récursif,…, appel de base

CSI2510 74

Partition, …, appel récursif, appel de base

7 9 7

7 2 9 4 3 7 6 1

2 4 3 1 →→→→ 1 2 3 4

1 →→→→ 1 4 3 →→→→ 3 4

3 →→→→ 3 4 →→→→ 4

9 →→→→ 9

74CSI2510 - Aut.09 - Tris recursifs

Tri rapide – Exemple1

CSI2510 75

Joindre, joindre

7 9 7 →→→→ 7 7 9

7 2 9 4 3 7 6 1 →→→→ 1 2 3 4 6 7 7 9

2 4 3 1 →→→→ 1 2 3 4

1 →→→→ 1 4 3 →→→→ 3 4

3 →→→→ 3 4 →→→→ 4

9 →→→→ 9

75CSI2510 - Aut.09 - Tris recursifs

Tri rapide – Exemple1

CSI2510 76

Pire de cas : temps d'exécution Le pire de cas pour le tri rapide arrive quand le pivot est l’élément unique minimum ou maximum Un des ensembles L et G a la taille n − 1 et l'autre a la taille 0Le temps d’exécution est proportionnel à la somme

n + (n − 1) + … + 2 + 1Alors, dans le pire des cas, le temps d'exécution du tri rapide est O(n2)

profondeur temps

0 n

1 n − 1

… …

n − 1 1

Page 20: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 20

CSI2510 77

Temps moyen d'exécutionConsidérer un appel récursive au tri

rapide sur une séquence de taille s. Soit:

� Pour la moitié des appels: la taille de Let G est inférieure à 3s/4

� Pour l’autre moitié: soit L ou G a une taille plus grande que 3s/4

En moyenne, chaque niveau i traitera une séquence de taille (3/4)i/2n

Le dernier niveau est atteint lorsque (3/4)i/2n = 1. C’est-à-dire i=2log4/3n

La hauteur de l’arbre est donc O(log n)

s(r)

s(a) s(b)

s(c) s(d) s(f)s(e)

time per levelexpected height

O(log n)

O(n)

O(n)

O(n)

total expected time: O(n log n)

CSI2510 78

Temps prévu d'exécutionAinsi, nous avons� La hauteur prévue de l'arbre de tri

rapide est O(log n)

� La quantité de travail total fait aux nœuds de même profondeur de l'arbre de tri rapide est O(n)

� Ainsi, le temps prévu d’exécution est O(n log n)

s(r)

s(a) s(b)

s(c) s(d) s(f)s(e)

time per levelexpected height

O(log n)

O(n)

O(n)

O(n)

total expected time: O(n log n)

CSI2510 79

Dans l'étape de partition, nous utilisons des opérations de remplacement pour réarranger les éléments des séquences d’entrées tel que� les éléments plus petits que le pivot ont des rangs plus

petit que h� les éléments égaux au pivot ont des rangs entre h et k� les éléments plus grands que le pivot ont des rangs plus

grand que kLes appels récursifs considèrent� les éléments avec un rang plus petit que h� les éléments avec un rang plus grand que k

Tri rapide sur place

CSI2510 80

Étape 1 pour Diviser: l scrute la séquence de la gauche, et r de la droite

Un échange est exécuté quand l est à un élément plus grand que le pivot et r est à un élément plus petit que le pivot.

Tri rapide sur place

Page 21: 13-TriRec.pptsite.uottawa.ca/~laganier/csi2510/CSI2510TriRec.pdf · Title: Microsoft PowerPoint - 13-TriRec.ppt [Compatibility Mode] Author: laganier Created Date: 11/6/2013 12:56:39

Recursive Sort 11/6/2013 12:56 PM

CSI2510 21

CSI2510 81

Un échange final avec le pivot complète l’étape pour Diviser

Tri rapide sur place

CSI2510 82

Algorithm inPlacePartition(p,s,e)

Entrées: position p du pivot; s et e sont les limites dans la séquence

Sorties: l et r tel que : r-1=indice du dernier élément plus petit que le pivot

l+1=indice du premier élément plus grand que le pivot

l ← s, r ← e-1

swap S[p] with S[e], p ← e

while l ≤ r

while S[l] < S[p] and r > l

l ← l+1

while S[r] > S[p] and r > l

r ← r-1

if r > l swap S[r] with S[l]

swap S[l] with S[p]

return r,l

On partitionne la séquence en utilisant deux indices pour la décomposer en L,E et G

Répéter jusqu'à ce que l et r se croisent:� l parcourt le tableau de

gauche à droite jusqu’à trouver un élément ≥ le pivot

� r parcourt le tableau de droite à gauche jusqu’à trouver un élément < le pivot

� Échanger les éléments d’indices l et r

Tri rapide sur place

CSI2510 83

Algorithm inPlaceQuickSort(S, l, r)

Entrées séquence S, rangs l et r

Sortirs séquence S avec les éléments des rangs entre l et rréarrangés dans l'ordre croissant

if l ≥ r

return

i ← entier aleatoire entre l et r

x ← S.elemAtRank(i)

(h, k) ← inPlacePartition(i,l,r)

inPlaceQuickSort(S, l, h − 1)

inPlaceQuickSort(S, k + 1, r)

Tri rapide sur place

CSI2510 84

Algorithm Time NotesTri par

sélectionO(n2)

tous les cas

sur-placelent (acceptable avec peu de

données)

Tri par insertion

O(n2)

pire et moyen

sur-placelent (acceptable avec peu de

données)

Tri rapideO(n2) au pire

O(n log n)

en moyenne

sur-place, partition trèssimple

le plus rapide (bon avec un grand nombre d’entrées)

Tri par monceau

O(n log n)

tous les cas

sur-placerapide (bon avec un grand

nombre d’entrées)

Tri fusionO(n log n)

tous les cas

accès séquentiel(distribuées)

fast (bon avec un très grand nombre d’entrées)