使用了内省排序(Introsort)
现代标准库实现中,std::sort 通常使用 内省排序(Introsort),它是一种混合排序算法,结合了以下三种算法的优点:
快速排序
作为主要算法,平均情况下效率很高
O
(
n
log
n
)
O(n \log n)
O(nlogn)
堆排序
当快速排序的递归深度过大(可能导致 O(n^2) ) 的最坏情况)时,切换到堆排序,保证最坏复杂度为
O
(
n
log
n
)
O(n \log n)
O(nlogn)
插入排序
对于小规模子序列(通常少于 16 个元素),使用插入排序,因为它在小数据集上更快。