1
Licence Informatique L3 année 2008-2009
Parcours : Informatique fondamentale
TD 7 : Tri Rapide
Description du tri rapide d’un tableau A[i…j] .
Diviser : à partir du pivot q = A[i], partitionner A en deux sous tableaux non vides A[i…k-
1] et A[k+1…j] tels que tout élément de A[i…k-1] soit inférieur ou égal à q et tout élément de
A[k+1…j] soit supérieur à q. A[k]= q.
Régner : trier par la procédure de manière récursive A[i…k-1] et A[k+1…j].
Combiner : il n’y a rien à faire !!!
D’où l’algorithme de tri rapide (pour un tableau d’entiers) :
procedure Tri-rapide (var A : tableau d’entiers [1…n] ; i :entier ; j : entier) ;
entier : k ;
début
si (i<j) alors
début
Placer(A,i,j, k) ;
Tri-rapide(A,i,k-1) ;
Tri-rapide(A,k+1,j) ;
fin
finsi
fin
procedure Placer(var A : tableau d’entiers [1…n] ; i :entier ; j : entier ; var k : entier) ;
entier : l ;
entier : q , x;
début
l := i+1 ;
k := j ;
tant que l k faire
début
tant que A[k] > A[i] faire k := k-1 ; {à la fin A[k]
A[i] }
tant que lj et A[l] A[i] faire l := l+1 ; {à la fin A[l] > A[i] }
si l < k alors
début
x := A[l] ;
A[l] := A[k] ; {échange de A[l] et A[k] }
A[k] := x ;
l :=l+1 ;
k :=k-1 ;
fin
finsi
fin
q := A[i] ;
A[i] := A[k] ; {échange de A[i] et A[k]}
A[k] := q ;
Fin
2
Le but de cet exercice est de trouver la complexité moyenne de l’algorithme de Tri-rapide en
terme de comparaisons. Toutes les étapes de calcul sont décrites et les résultats donnés à chaque
étape afin qu’indépendamment du temps consacré en TD, vous puissiez reprendre et comprendre
la démarche.
I Analyse de Placer en nombre de comparaisons
1.1 Faire dérouler l’algorithme Placer sur l’exemple [101, 213, 20, 123, 47, 79, 195].
1.2 Analyser l’algorithme selon que le pivot q est un minimum du tableau, un maximum ou une
valeur intermédiaire.
1.3 Montrer que le nombre de comparaisons pour un tableau de longueur n est égal à n-1 ou n+1.
II Analyse de Tri-rapide en nombre de comparaisons
On suppose que les valeurs de A sont toutes distinctes.
2.1 Complexité au pire : Le pire de cas correspond à un tableau de valeurs strictement
croissantes. Calculer le nombre de comparaisons effectuées dans ce cas pour un tableau de taille
n. En déduire que la complexité au pire Max(n) vérifie :
)()(
2
nnMax
θ
=
2.2 On suppose que le pivot q peut se placer de manière équiprobable sur n’importe quelle place k
du tableau de taille n. On a donc une probabilité 1/n d’avoir le pivot à la kième place, et donc
d’avoir deux sous tableaux de taille respective k-1 et n-k.
Si on note Moy(n) la complexité en moyenne de l’algorithme du tri rapide, en utilisant 1.3,
comprendre que l’encadrement de Moy(n) par récurrence :
0)1()0(
2,))()1((
1
1)())()1((
1
1
11
==
+++++
==
MoyMoy
nknMoykMoy
n
nnMoyknMoykMoy
n
n
n
k
n
k
Suit la démonstration pour calculer cette Moyenne donnée par récurrence.
2.3 On pose :
0;0
2,)(
1
1
)(
1
1
1010
11
11
====
+++=
++=
=
=
BBAA
nBB
n
nB
AA
n
nA
n
kknkn
n
kknkn
, alors
nn
BnMoyA
)(
Montrer que
2,
2
1
2
1
1
1
1
1
++=
+=
=
=
nB
n
nB
A
n
nA
n
kkn
n
kkn
3
2.4 On utilisera ici la méthode par soustraction pour trouver B
n
:
a) On a :
2,2)1(
1
1
=
=
nBnBn
n
kkn
. Montrer que par soustraction on
obtient : nBnnB
nn
2)1(
1
++=
.
b) Après division par n(n+1) et en utilisant le changement de domaine 1+
=nB
v
n
n
, montrer
que la suite (v
n
) vérifie
3,
1
2
1
+
+=
n
n
vv
nn
c) En déduire que )
3
1
2
1
1(21
1
21
1
1
4
+=+=
+
+
=
n
n
k
n
H
k
vH
n
est la série harmonique.
d) En déduire que : 328
)1(2
+
+= n
HnB
nn
. On obtient de même nHnA
nn
4)1(2 +
=
.
e) Conclusion : en utilisant le résultat vu en cours (Chapitre Approximations asymptotiques),
à savoir que la série harmonique H
n
vérifie )(nLogH
n
, montrer que :
)(2)( nnLognMoy
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !