Tout d'abord, une définition, car c'est assez important: Un tri stable est celle qui est la garantie de ne pas réorganiser les éléments avec des clés identiques.
Recommandations:
Tri rapide: Lorsque vous n'avez pas besoin d'un tri stable et la moyenne des performances des questions plus pire des cas la performance. Un tri rapide est O(N log N) en moyenne, O(N^2) dans le pire des cas. Une bonne mise en œuvre utilise O(log N) auxiliaire de stockage sous la forme de l'espace de pile de récursion.
Fusion de tri: Lorsque vous avez besoin d'un stable, O(N log N) en quelque sorte, il s'agit de votre seule option. Les seuls inconvénients sont qu'il utilise O(N) auxiliaire de l'espace et est un peu plus grande constante qu'un tri rapide. Il y a quelques place de fusion de sortes, mais autant que je sache, ils sont tous soit pas stable ou pire que O(N log N). Même en O(N log N) dans le lieu sortes ont donc beaucoup plus constante que celle de la plaine de vieux fusion de sorte qu'ils sont plus théoriques curiosités que les algorithmes utiles.
Tas de tri: Lorsque vous n'avez pas besoin d'un tri stable et vous vous souciez plus des cas les pires performances que la moyenne des performances. C'est la garantie d'être en O(N log N), et utilise O(1) auxiliaire de l'espace, ce qui signifie que vous n'aurez pas exécuter inattendue de segment de mémoire ou d'espace de pile sur de très grandes entrées.
Introsort: C'est un tri rapide qui bascule sur un tas de tri après une certaine profondeur de récursion pour obtenir autour de la fonction de tri rapide est O(N^2) le pire des cas. C'est presque toujours de mieux qu'un bon vieux tri rapide, puisque vous obtenez la moyenne cas d'un tri rapide, avec des garanties de O(N log N) la performance. Probablement la seule raison d'utiliser un tas de tri au lieu de cela est sévèrement limitée par la mémoire des systèmes où O(log N) l'espace de pile est pratiquement significative.
Le tri par Insertion: Lorsque N est garanti pour être de petite taille, y compris le cas de base d'un tri rapide ou de fusion de tri. Bien que ce est O(N^2), il a une très faible constante et un tri stable.
Tri à bulles, tri de sélection: Lorsque vous êtes en train de faire quelque chose de rapide et sale, et pour une raison quelconque vous ne pouvez pas utiliser la bibliothèque standard de l'algorithme de tri. Le seul avantage de ces sur le tri par insertion est un peu plus facile à mettre en œuvre.
Non-comparaison sortes: dans certaines assez limité conditions, il est possible de rompre le O(N log N) barrière et de tri en O(N). Voici quelques cas où cela vaut la peine d'essayer:
Comptage tri: Lorsque vous effectuez le tri des entiers avec une gamme limitée.
Radix sort: Lors de log(N) est significativement supérieure à K, où K est le nombre de radix chiffres.
Seau de tri: Quand vous pouvez garantir que votre entrée est d'environ distribuées de manière uniforme.