Duplicata possible:
quel type de tri est utilisé dans la fonction sort ()?
Est-ce que std :: sort implémente Quicksort?
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).
Il utilise quicksort ou introsort.
De Wikipédia -
L'algorithme de tri spécifique n'est pas obligatoire et peut varier selon les implémentations. Trier le lien Wiki