introsort比合并排序(时间复杂度)更好吗?

时间:2019-01-25 18:34:14

标签: c++ algorithm sorting mergesort introsort

请解释为什么C ++ sort()算法使用introsort?在什么情况下比常规的mergeSort算法表现更好?

2 个答案:

答案 0 :(得分:4)

  

内省排序比合并排序(时间复杂度)更好吗?

这两种算法的渐近时间复杂度相同:最坏情况和平均情况下的O(N log N)

  

请解释为什么C ++ sort()算法使用introsort?

假设您的意思是标准算法std::sort,则不能保证使用introsort来实现。您可能正在指一些特定的实现。

  

在什么情况下,它的性能比常规的mergeSort算法好

通常在数据具有较高的缓存局部性且输入范围的长度较小的情况下。

答案 1 :(得分:2)

在大多数情况下,快速排序优于合并排序。但是,快速排序在开始几乎要排序的数据上表现不佳; introsort解决了一些错误的情况。