forked from OSchip/llvm-project
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 |
||
|---|---|---|
| .. | ||
| is.heap | ||
| make.heap | ||
| pop.heap | ||
| push.heap | ||
| sort.heap | ||
| nothing_to_do.pass.cpp | ||