L2 informatique - Année 2016–2017
TD d’Éléments d’Algorithmique n◦6
université
PARIS
.
DIDEROT
PARIS 7
Exercice 1. Tri rapide.
1. Exécutez à la main l’algorithme de tri rapide sur le tableau
T=3651724
en supposant que la position du pivot dans l’appel quicksort(t,g,d) est toujours d.
Combien avez-vous fait de comparaisons ?
2. Donnez un tableau tde 7entiers (une permutation des entiers de 1à7, par exemple) tel
que le nombre de comparaisons effectuées lors de l’appel quicksort(t,0,6) soit le plus
grand possible, pour le même choix de pivot qu’au point précédent. Quel est ce nombre ?
3. On rappelle qu’un algorithme de tri est stable s’il ne change pas l’ordre relatif d’éléments
équivalents. Par exemple, si on trie stablement un tableau de couples d’entiers par rapport
aux premières composantes des couples, et si (1,1) précède (1,0) avant le tri, alors (1,1)
précède (1,0) après le tri.
(a) Le tri rapide est-il stable ?
(b) Le tri fusion est-il stable ?
Exercice 2. Recherche dichotomique.
La recherche d’un élément dans un tableau non trié de taille ncoûte ncomparaisons dans
le cas pire.
1. Voici un premier algorithme de recherche d’un élément dans un tableau trié :
1recherche (el ,T) :
2for i from 0 to T. length -1 {
3if ( t [i ]= el ) {
4return i
5} el se if (t [ i] > el ) {
6return -1
7}
8return -1
9}
Quelle est la complexité de cet algorithme en fonction de la taille de T, en termes du
nombre de comparaisons effectuées dans le pire des cas ?
2. Pour exploiter efficacement le caractère trié du tableau, il faut commencer par comparer
l’élément cherché et l’élément central du tableau, puis si l’élément cherché est plus petit
que l’élément central, continuer la recherche dans la première moitié du tableau 1, sinon
dans la deuxième moitié, et ainsi de suite tant qu’on ne trouve pas l’élément cherché et
qu’il reste de la place où le chercher.
Proposez un algorithme récursif rechercheDichotomique qui mette en œuvre l’idée don-
née ci-dessus.
3. Donnez une version itérative de ce même algorithme.
4. Appliquez l’algorithme du point précédent pour vérifier si 6apparaît dans le tableau trié
1 2 3 4 5 7 8 9 10
1. L’élément cherché ne peut pas se trouver dans l’autre moitié.
1