hanchenye-llvm-project/libcxx/test/algorithms
David Majnemer 8b51260274 Fix std::make_heap's worst case time complexity
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
2014-07-22 06:07:09 +00:00
..
alg.c.library
alg.modifying.operations Taking another swing at correctly optimizing fill_n. 2013-08-01 17:29:28 +00:00
alg.nonmodifying War on tabs. 2013-07-08 21:06:38 +00:00
alg.sorting Fix std::make_heap's worst case time complexity 2014-07-22 06:07:09 +00:00
algorithms.general
version.pass.cpp