请解释为什么C ++ sort()算法使用introsort?在什么情况下比常规的mergeSort算法表现更好?
答案 0 :(得分:4)
内省排序比合并排序(时间复杂度)更好吗?
这两种算法的渐近时间复杂度相同:最坏情况和平均情况下的O(N log N)
请解释为什么C ++ sort()算法使用introsort?
假设您的意思是标准算法std::sort
,则不能保证使用introsort来实现。您可能正在指一些特定的实现。
在什么情况下,它的性能比常规的mergeSort算法好
通常在数据具有较高的缓存局部性且输入范围的长度较小的情况下。
答案 1 :(得分:2)
在大多数情况下,快速排序优于合并排序。但是,快速排序在开始几乎要排序的数据上表现不佳; introsort解决了一些错误的情况。