forked from OSchip/llvm-project
8b51260274
std::make_heap is currently implemented by iteratively applying a siftup-type algorithm. Since sift-up is O(ln n), this gives std::make_heap a worst case time complexity of O(n ln n). The C++ standard mandates that std::make_heap make no more than O(3n) comparisons, this makes our std::make_heap out of spec. Fix this by introducing an implementation of __sift_down and switch std::make_heap to create the heap using it. This gives std::make_heap linear time complexity in the worst case. This fixes PR20161. llvm-svn: 213615 |
||
---|---|---|
.. | ||
alg.binary.search | ||
alg.heap.operations | ||
alg.lex.comparison | ||
alg.merge | ||
alg.min.max | ||
alg.nth.element | ||
alg.permutation.generators | ||
alg.set.operations | ||
alg.sort | ||
nothing_to_do.pass.cpp |