web-dev-qa-db-fra.com

Est-ce que std :: sort implémente Quicksort?

Duplicata possible:
quel type de tri est utilisé dans la fonction sort ()?

Est-ce que std :: sort implémente Quicksort?

35
ajay

Il existe deux algorithmes traditionnellement utilisés.

std::sort est le plus susceptible d'utiliser QuickSort , ou au moins une variante de QuickSort appelée IntroSort , qui "dégénère" en - HeapSort lorsque la récursivité va trop loin.

De la norme:

Complexité: comparaisons O (N log (N)).

std::stable_sort Est le plus susceptible d'utiliser MergeSort , en raison de l'exigence de stabilité. Notez cependant que MergeSort nécessite un espace supplémentaire pour être efficace.

De la norme:

Complexité: il fait au plus N log2(N) comparaisons; si suffisamment de mémoire supplémentaire est disponible, il s'agit de N log (N).

Je n'ai pas encore vu un std::sort Implémenter TimSort qui est prometteur et a été adopté en Python (conçu pour cela en fait), Java et Android (à ce jour).

39
Matthieu M.

Il utilise quicksort ou introsort.

http://www.sgi.com/tech/stl/sort.html

1
XAder

De Wikipédia -

L'algorithme de tri spécifique n'est pas obligatoire et peut varier selon les implémentations. Trier le lien Wiki

0
Mahesh