sort_heap complexity guarantee

Marc Glisse marc.glisse@inria.fr
Sun Oct 5 20:54:00 GMT 2014


On Sun, 5 Oct 2014, François Dumont wrote:

>    I took a look at PR 61217 regarding pop_heap complexity guarantee. Looks 
> like we have no test to check complexity of our algos so I start writing some 
> starting with the heap operations. I found no issue with make_heap, push_heap 
> and pop_heap despite what the bug report is saying however the attached 
> testcase for sort_heap is failing.
>
>    Standard is saying std::sort_heap shall use less than N * log(N) 
> comparisons but with my test using 1000 random values the test is showing:
>
> 8687 comparisons on 6907.76 max allowed
>
>    Is this a known issue of sort_heap ? Do you confirm that the test is 
> valid ?

I would first look for confirmation that the standard didn't just forget a 
big-O or something. I would expect an implementation as n calls to 
pop_heap to be legal, and if pop_heap makes 2*log(n) comparisons, that 
naively sums to too much. And I don't expect the standard to contain an 
advanced amortized analysis or anything like that...

-- 
Marc Glisse



More information about the Libstdc++ mailing list