:: Enseignements :: ESIPE :: E3INFO :: 2013-2014 :: Algorithmique ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Tris (suite) |
Les TP 4 et 5 donneront lieu à un rapport qui sera à déposer sur la
plateforme Moodle après la prochaine séance de TP.
Ce rapport contiendra les explications des algorithmes,
et des tests que vous avez choisis,
la complexité de vos algorithmes et les diagrammes.
Vous comparerez différents algorithmes de tris.
Toutes vos réponses doivent être bien motivées.
Exercice 1 - Tri fusion
-
Écrire les fonctions permettant le tri d'un tableau d'entiers
par tri fusion.
N'oubliez pas d'utiliser vos tests de la séance précédente.
Exercice 2 - Tri rapide
-
Écrire les fonctions permettant le tri d'un tableau d'entiers
par tri rapide.
Exercice 3 - Comparaisons
-
En utilisant gnuplot,
visualiser le nombre de comparaisons et de déplacements pour
le tri fusion et le tri rapide.
Comparer avec les autres tris.
-
Combien d'entiers pouvez-vous trier en 10 secondes avec
les différents algorithmes de tri ?
En 20 secondes ?
Pour mesurer, vous pouvez utiliser time ./prog
dans le terminal pour
lancer le programme prog et afficher le temps de son
exécution.
Pour des très grands tableaux, la pile d'exécution n'est pas
suffisamment grande et vous obtenez une Segmentation fault.
Pour résoudre ce problème vous pouvez allouer les tableaux sur
le tas avec malloc.
-
Répondre à la même question en utilisant des tableaux
décroissants, [taille-1, taille-2, ..., 2, 1, 0],
au lieu de tableaux aléatoires.
Expliquer le comportement du tri rapide.
Exercice 4 - Tri rapide dans <stdlib.h>
La librairie standard (<stdlib.h>) du
C contient une
fonction de tri appelée
qsort.
Vous trouvez un exemple de son utilisation
ici.
-
Pour voir le code d'une implémentation de la libc,
vous pouvez regarder ici :
The GNU C Library.
Naviger vers le code de la fonction qsort.
Quelles améliorations sont implantées pour le tri rapide ?
© Université de Marne-la-Vallée