Guide de compréhension Tri recursif, Study Guides, Projects, Research of Advanced Algorithms

Algorithmes de tris et complexités

Typology: Study Guides, Projects, Research

2018/2019

Uploaded on 12/31/2019

LeNasarien
LeNasarien 🇨🇲

1 document

1 / 20

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
as
Architecture des Systèmes d’Information
Introduction Tris rapide Tri par fusion Conclusion
Tris ecursifs
I3 - Algorithmique et programmation
Nicolas Delestre
Tris ecursifs - v1.0 1 / 20
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14

Partial preview of the text

Download Guide de compréhension Tri recursif and more Study Guides, Projects, Research Advanced Algorithms in PDF only on Docsity!

as

Architecture des Systèmes d’Information

Tris r´ecursifs

I3 - Algorithmique et programmation

Nicolas Delestre

as

Architecture des Systèmes d’Information

Plan...

1 Introduction

2 Le tris rapide (Quick sort)

3 Tri par fusion

4 Conclusion

as

Architecture des Systèmes d’Information

Principe des tris r´ecursifs

Principe

L’algorithme des tris r´ecursifs est bas´e sur le principe :

Diviser : On divise le tableau en deux

R´egner : On trie ces deux tableaux

Combiner : On combine ces deux tableaux

Il existe deux tris r´ecursifs

Le tri rapide : “l’intelligence” du tri se trouve au niveau de la

division du tableau (partitionnement)

Le tri par fusion : “l’intelligence” du tri se trouve au niveau la

combinaison des deux tableaux

as

Architecture des Systèmes d’Information

Le tri rapide (Quick sort) 1 / 9

Principe

1 Partitionner le tableau afin que tous les ´el´ements du sous-tableau gauche soient

plus petits ou ´egaux `a un ´el´ement (le pivot)

2 Trier le sous-tableau gauche et le sous-tableau droit

algorithme

proc´edure triRapide (E/S t :Tableau[1..MAX] d’Entier,E nb :Naturel)

debut

triRapideRecursif(t,1,nb)

fin

proc´edure triRapideRecursif (E/S t :Tableau[1..MAX] d’Entier,E d,f :Naturel)

D´eclaration indicePivot : Naturel

debut

si d<f alors

partionner(t,d,f,indicePivot)

triRapideRecursif(t,d,indicePivot-1)

triRapideRecursif(t,indicePivot+1,f)

finsi

fin

as

Architecture des Systèmes d’Information

Le tri rapide (Quick sort) 3 / 9

Arbre des appels de proc´edures

5 3 7 6 9 1 3 7 9 8

1 3 3 5 9 6 7 7 9 8

1 3 3 9 6 7 7 9 8

1 3 3

3 3

3 3

3

8 6 7 7 9 9

8 6 7 7

7 6 7 8

7 6 7

7 6 7

7 6

6 7

6

partitionner

trier

9

9

9

as

Architecture des Systèmes d’Information

Le tri rapide (Quick sort) 4 / 9

Exemple de fonctionnement du partitionnement

d f

i j

d f

i j

d f

i j

d f

i j

as

Architecture des Systèmes d’Information

Le tri rapide (Quick sort) 6 / 9

Exemple de fonctionnement du partitionnement

d f

i j

d f

j i

d f

Ip

as

Architecture des Systèmes d’Information

Le tri rapide (Quick sort) 7 / 9

proc´edure partitionner (premi`ere version)

proc´edure partitionner (E/S t : Tableau[1..MAX] d’Entier ; E debut,fin : Naturel ; S

indicePivot : Naturel)

D´eclaration i,j,pivot : Naturel

debut

pivot ← t[debut]

i ← debut

j ← fin

tant que i≤j faire

tant que t[i]≤pivot et i≤j faire

i ← i+

fintantque

tant que t[j]>pivot et i≤j faire

j ← j-

fintantque

si i≤j alors

echanger(t[i],t[j])

finsi

fintantque

indicePivot ← j

echanger(t[debut],t[j])

fin

as

Architecture des Systèmes d’Information

Le tri rapide (Quick sort) 9 / 9

Calcul de la complexit´e

La proc´edure de partionnement a une complexit´e en n. La complexit´e du

tri rapide d´epend donc du nombre d’appels r´ecursifs (hauteur h de l’arbre

de r´ecursion)

Dans le meilleur des cas, le partitionnement coupe le tableau en deux parties de

mˆeme longueur (a plus ou moins 1 pres)

On a : n = 2

h

, donc h = log 2 n

Donc on a Ω(nlog 2 n)

Dans le pire des cas, le partionnement coupe le tableau en deux sous tableaux,

l’un de longueur 1 et l’autre n − 1

Dans ce cas h = n

Et donc on a O(n

En moyenne on a Θ(nlog 2 n)

Complexit´e

Ω(nlog 2 n) Θ(nlog 2 n) O(n^2 )

as

Architecture des Systèmes d’Information

Le tri par fusion 1 / 6

Principe

1 Diviser le tableau en deux sous-tableaux de mˆeme longueur (`a plus

ou moins 1 pr`es)

2 Trier le sous-tableau gauche et le sous-tableau droit

3 Fusionner les deux sous-tableaux

algorithme

proc´edure triFusion (E/S t :Tableau[1..MAX] d’Entier,E nb :Naturel)

debut

triFusionRecursif(t,1,nb)

fin

proc´edure triFusionRecursif (E/S t :Tableau[1..MAX] d’Entier,E d,f :Naturel)

debut

si d<f alors

triFusionRecursif(t,d,(d+f) div 2)

triFusionRecursif(t,((d+f) div 2)+1,f)

fusionnner(t,d,(d+f) div 2,f)

finsi

fin

as

Architecture des Systèmes d’Information

Le tri par fusion 3 / 6

Arbre des appels de proc´edures

5 3 7 6 9 1 3 7 9 8

fusionner

trier

5 3 7 6 9 1 3 7 9 8

5 3 7 6 9 1 3 7 9 8

5 3 7 6 9

5 3 7 6 9

5 3 7

5 3 7

5 3

5 3

3 5

3 5 7

3 5 6 7 9

1 3 7 9 8

1 3 7 9 8

1 3

1 3

6 9

6 9

6 9

1 3

1 3 7 9 8

1 3 7 9 8

8 9

1 3 7

1 3 7 8 9

1 3 3 5 6 7 7 8 9 9

diviser

as

Architecture des Systèmes d’Information

Le tri par fusion 4 / 6

Exemple de fonctionnement de fusionner

d f

Le tableau interm´ediaire :

as

Architecture des Systèmes d’Information

Le tri par fusion 6 / 6

Calcul de la complexit´e

Soit h La hauteur de l’arbre de r´ecursion

Ici on a toujours n = 2

h

, donc h = log 2 n

Donc en temps on a Ω(nlog 2 n), O(nlog 2 n) et Θ(nlog 2 n)

Mais on a besoin d’un tableau interm´ediaire pour fusionner

Complexit´e

Ω(nlog 2 n) Θ(nlog 2 n) O(nlog 2 n)

as

Architecture des Systèmes d’Information

Conclusion

Il existe plusieurs algorithmes de tri que l’on peut classer suivant :

les m´ethodes utilis´ees (it´eratifs ou r´ecursifs)

les performances

Ces cours ne pr´esentent pas toutes les m´ethodes de tri, entre autres :

le shellsort

le heapsort (ou tri par tas)

L’un des meilleurs car en O(nlog 2 n) et it´eratif

le radixsort

etc.