【发布时间】:2014-10-09 19:37:48
【问题描述】:
如标题所示 - std::sort() 和 std::sort_heap() 的内存复杂度是多少? (后者需要std::make_heap(),所以我也想知道它的内存复杂度。)
我尝试在这些网站上搜索:http://www.cplusplus.com/reference/http://en.cppreference.com/w/,但要么我错过了它,要么他们只提到了时间复杂度。是否在任何地方(在 C++ 标准或其他文档中)指定了所述函数的内存复杂性?或者这可能取决于实现?
【问题讨论】:
-
所有三种算法都是就地的,即额外的内存是 O(1)。
-
-
快速排序非常到位。数据永远不会移动到外部数据存储中。数据永远不会放在堆栈上。关于您在容器中的位置的参数可能会放在堆栈上。您可以争论内存是否为 O(1),但不能争论是否就地。
-
intro-sort不是。 -
该标准对内存成本没有要求。一个假设的一致性实现可以仅为 lulz 分配
O(2^N)内存,尽管没有理智的库编写者会这样做。
标签: c++ c++11 big-o c++-standard-library space-complexity