Lower bound on heapsort?

前端 未结 3 1330
天涯浪人
天涯浪人 2020-12-08 16:29

It\'s well-known that the worst-case runtime for heapsort is Ω(n lg n), but I\'m having trouble seeing why this is. In particular, the first step of heapsort (making

3条回答
  •  旧巷少年郎
    2020-12-08 17:07

    Here is a solution that uses CLRS terms:
    We start with a max-heap that is a complete binary tree with n elements.
    We can say that in a complete binary there are n/2 leaves and n/2 inner nodes.
    n/2 iterations of HEAP-SORT remove the largest n/2 elements from the heap.
    Let S be the set of the largest n/2 elements.
    There can be at most n/4 elements from S in the leaves since there must be additional n/4 of them in the inner nodes.
    Let L be these n/4 largest elements from S that are in the leaves.
    So if there are n/4 elements from S at level 0 (the leaves level) then there must be at least n/8 of them at level 1.
    Let P be these n/8 elements from S that are at level 1.
    n/2 iterations of HEAP-SORT may give the elements from L a short cut to the root and then out of the heap, but the elements from P must make all the way to the root before they are removed from the heap.
    So there are at least (n/8)(lgn-1) operations, which gives us a running time of Ω(nlgn).
    Now for the case of a max-heap that doesn't have all its leaves at level 0.
    Let k be the number of its leaves at level 0.
    After k iterations of HEAP-SORT, we are left with a max-heap that is a complete binary tree with height lgn-1.
    We can continue our proof the same way.
    Now for the case when there are less than n/4 leaves from S.
    Let k be the number of elements from S that are in the leaves at level 0.
    If k <= n/8 then there must be at least n/8 elements from S at level 1.
    This is because there can be a total of n/4 elements above level 1.
    We continue the proof the same way.
    If k>n/8 then there must be at least n/16 elements from S that are at level 1.
    We continue the proof the same way.
    We conclude that the running time of HEAP-SORT is Ω(nlgn).

提交回复
热议问题