Universit´e d’Aix-Marseille L2 Informatique et Math´ematiques - 2016/2017
Algorithmique
TD4 : tas et tris 1.
Exercice 1´
Ecrivez l’algorithme CheckMaxHeap(T, n) qui v´erifie que les npremi`eres
cases du tableau tforment un tasmax. Quelle est la complexit´e de votre algorithme ?
Exercice 2 Un tas est donn´e par les npremiers ´el´ements d’un tableau T.
1. ´
Ecrivez l’algorithme InsertVal(T, n, v) qui ins`ere une valeur vdans un tasmax T
de n´el´ements (on suppose que le tableau est suffisamment grand).
2. ´
Ecrivez l’algorithme SupprimeNoeud(T, n, i) qui supprime le nœud idans le tas-
max Tde n´el´ements.
Dans les deux cas, le tas r´esultant est un tasmax.
Exercice 3 Si l’on utilise l’algorithme InsertVal de l’exercice pr´ec´edent pour construire
un tasmax de n´el´ements, quel est la complexit´e de l’algorithme ? Est-ce optimal ?
Exercice 4´
Etant donn´es ktableaux tri´es T1, . . . , Tkcontenant au total n´el´ements,
´ecrivez un algorithme en O(nlog k) permettant de les fusionner en un unique tableau tri´e.
Exercice 5 D´ecrivez un algorithme de complexit´e O(n+k) qui prend en entr´ee un tableau
Tcomprenant nentiers compris entre 0 et ket qui pr´e-traite Tde mani`ere `a pouvoir
r´epondre `a n’importe quelle requˆete du type Combien le tableau T a t-il d’´el´ements dans
l’intervalle [a, b] ? en temps O(1).
Exercice 6 Montrez comment trier nentiers compris entre 0 et n2
−1 en temps O(n).
Exercice 7 On dispose de nr´ecipients rouges et nr´ecipients bleus. Les r´ecipients rouges
ont tous des volumes diff´erents, et pour chaque r´ecipient rouge, il y en a un bleu de mˆeme
volume (et vice versa !). L’objectif est de retrouver toutes les paires de r´ecipients de mˆeme
volume. La seule op´eration possible est : choisir une paire de r´ecipients de couleur diff´erente,
remplir l’un et verser dans l’autre. Cela revient `a les comparer. Cette op´eration prend une
unit´e de temps. On ne peut pas comparer directement des r´ecipients de mˆeme couleur.
1. Trouvez un algorithme en Θ(n2) qui r´esoud le probl`eme.
2. Trouvez un algorithme randomis´e qui r´esoud le probl`eme en O(nlog n) en moyenne.
1. La plupart de ces exercices proviennent de Introduction to Algorithms, de T. H. Cormen, C. E.
Leiserson, R. L. Rivest, C. Stein.
1