Algorithmique Avanc´ee
exercices: “Divide and Conquer”
Exercice 1
1. Coder l’algorithme de recherche MinMax “divide and conquer” vu au cours. Donner a
votre programme le comportement suivant :
Lecture d’un entier n.
G´en´eration un tableau de nentiers al´eatoires entre 0 et 100.
Impression du min et le max.
2. Comparer les vitesses d’ex´ecutions pour diff´erents ordres de grandeur de n, en utilisant
la fonction time 1de linux.
3. Suivre la mˆeme d´emarche pour l’ algorithme de tri rapide “Quicksort”.
Exercice 2
Trouver un algorithme direct pour MinMax qui exploite le fait qu’on calcule le Min et le Max
en mˆeme temps.
Montrer que sa complexit´e moyenne est 3
2n.
Donner la complexit´e dans le pire des cas et dans le meilleur cas.
Exercice 3
Prouver (de fa¸con th´eorique) que la proc´edure partition (dans l’algorithme quicksort) fonc-
tionne.
Que se passe-t-il si on n’utilise pas des ´egalit´es strictes ?
G´en´eraliser cette proedure si le pivot n’est pas le premier nombre de la suite.
Exercice 4
Comparer les performances des impl´ementations r´ecursives et it´eratives de quicksort.
Exercice 5
Impl´ementer la version de select avec le choix des pivots bas´e sur la m´ediane des m´edianes.
Exercice 6
Montrer les deux points suivants :
n
ll1
l≤ bn
lc ≤ n
l
b1
2b1
2b1
2· · · b1
2b1
2
| {z }
blog2nc
ncc · · · ccc = 1
1Pour en savoir plus sur la fonction time, utilisez les pages de manuels : man time (depuis la console).
1
1 / 1 100%