Gobillot
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
34
10 avril 2005 à 21:48
Comparaisons des différents algorithmes. Ci dessous, vous trouverez un tableau comparatif qui montre les temps, en millisecondes, pris par les différents algorithmes pour triés 10 000 nombres. La machine utilisée était équipée d'un processeur Athlon XP 2300 à 1.66GHz.
<HR align=center width="60%" height="1">
Algorithme
,
Temps (ms)
,
----
,
----
Bubble Sort
,
411.691
,
----
Bubble Insertion
,
287.979
,
----
Bubble Elevator
,
36.201
,
----
,
----
Insertion Sort
,
69.655
,
----
Selection Sort
,
352.927
,
----
,
----
Shell Sort
,
3.243
,
----
,
----
QuickSort
,
1.497
,
----
QuickSort Lomuto
,
1.454
,
----
QuickSort Dijsktra
,
2.405
,
----
QuickSort Hybrid
,
1.399
,
----
QuickSort Wainwright
,
2.180
,
----
,
----
Ex Situ Heap Sort
,
1.740
,
----
In Situ Heap Sort
,
2.240
,
----
,
----
Ex Situ Merge Sort
,
3.561
,
----
In Situ Merge Sort
,
11.026
,
----
,
----
Radix Sort 4 (compact)
,
1.403
,
----
Radix Sort 4 (extern)
,
1.229
,
----
,
----
Counting Sort
,
0.842
,
----
,
----
ProxMap Sort
,
0.701
<HR align=center width="60%" height="1">
Les algorithmes de tris sont montrés dans l'ordre approximatif de performance et de familles. On a d'abord les tris à bulle, dont le tri de Shell est le dernier représentant, la famille des Quicksorts, et des autres tris en O(n lg n), suivi des tris par transformation d'adresse.
D'après le tableau, on voit immédiatement le fossé qui sépare les tris à bulles des autres tris. Le tri à bulles de base est particulièrement pathétique, surtout lorsqu'on le compare aux tris O(n lg n) et aux tris par transformation d'adresse qui sont O(n).
Les tris par transformation d'adresse, bien que les plus rapides, sont d'application restreinte. Le tri par radicaux, ou radix sort, demande que les clefs aient des valeurs numériques, et la généralisation aux chaînes de caractères n'est pas triviale et rend l'algorithme nettement moins attrayant. Le tri compteur nécessite aussi un ensemble de clefs distinctes assez petites pour être utilisable. Sinon, la structure de données nécessaire pour maintenir les comptes excède rapidement la taille du tableau à trier. Le même type de conclusion est aussi valable pour le tri par fonction de distribution cumulative, ou
proxmap sort
<HR>
Il faut toutefois moduler les résultats chronométrés en fonction de la machine utilisée, du compilateur, du système d'exploitation, etc. En effet, sur une même machine, la qualité du code généré par différents compilateurs peut varier substanciellement.
Daniel