请解释为什么 C++ sort() 算法使用 introsort?以及在哪些情况下它比常规的 mergeSort 算法表现更好
问问题
577 次
2 回答
5
introsort 比合并排序(时间复杂度)更好吗?
两种算法都具有相同的渐近时间复杂度:在最坏情况和平均情况下都是 O(N log N)。
请解释为什么 C++ sort() 算法使用 introsort?
假设您的意思是标准算法std::sort
,则不能保证使用 introsort 来实现。您可能指的是一些特定的实现。
以及在哪些情况下它比常规的 mergeSort 算法表现更好
通常在数据具有高缓存局部性并且输入范围的长度很小的情况下。
于 2019-01-25T18:42:03.383 回答
3
在大多数情况下,快速排序优于合并排序。但是快速排序在开始时几乎已排序的数据上表现不佳;introsort 修复了一些不正常的情况。
于 2019-01-25T18:46:13.690 回答