L2 informatique - Année 2016–2017
TD d’Éléments d’Algorithmique n6
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 chercne peut pas se trouver dans l’autre moitié.
1
5. Quelle est la complexité de la recherche dichotomique dans un tableau trié Ten fonction
de la taille de T, en termes du nombre de comparaisons effectuées dans le pire des cas ?
Exercice 3. Tableaux zigzag.
1zi g (T ,i , j) :
2r et ur n ( i = j || ( T [ i ] <= T [ i + 1] && z ag (T , i +1 , j ) ))
3
4za g (T ,i , j) :
5r et ur n ( i = j || ( T [ i ] >= T [ i + 1] && z ig (T , i +1 , j ) ))
1zigzag (T ) :
2r et ur n zig ( T ,0 , T . le ng th -1 )
1. Exécutez à la main zigzag({1,2,3,4}) et zigzag({1,3,2,4}).
2. Que calcule zigzag (T) ?
3. Est-ce que les appels mutuellement récursifs de zag et zig sont terminaux ?
4. Donner une version itérative de zigzag.
5. Un tableau d’entiers Test en forme zigzag si zigzag(T) renvoie true. Écrivez un algo-
rithme qui met un tableau en forme zigzag. Quelle est sa complexité ?
2
1 / 2 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 !