Asymptotic time complexity of inserting n elements to a binary heap already containing n elements

前端 未结 3 642
予麋鹿
予麋鹿 2021-01-05 06:58

Suppose we have a binary heap of n elements and wish to insert n more elements(not necessarily one after other). What would be the total time required for this?

I th

3条回答
  •  小鲜肉
    小鲜肉 (楼主)
    2021-01-05 07:41

    Assuming we are given:

    • priority queue implemented by standard binary heap H (implemented on array)
    • n current size of heap

    We have following insertion properties:

    • W(n) = WorstCase(n) = Θ(lg n) (Theta). -> W(n)=Ω(lg n) and W(n)=O(lg n)
    • A(n) = AverageCase(n) = Θ(lg n) (Theta). -> W(n)=Ω(lg n) and W(n)=O(lg n)
    • B(n) = BestCase(n) = Θ(1) (Theta). -> W(n)=Ω(1) and W(n)=O(1)

    So for every case, we have

    • T(n) = Ω(1) and T(n) = O(lg n)

    WorstCase is when, we insert new minimal value, so up-heap has to travel whole branch.

    BestCase is when, for minimal-heap (heap with minimal on top) we insert BIG (biggest on updated branch) value (so up-heap stops immediately).

    You've asked about series of n operations on heap containing already n elements, it's size will grow

    from n to 2*n
    

    what asymptotically is ...

    n=Θ(n)
    2*n=Θ(n)
    

    What simplifies our equations. (We don't have to worry about growth of n , as it's growth is by constant factor).

    So, we have "for n insertions" of operation:

    • Xi(n) = X_for_n_insertions(n)
      • Wi(n) = Θ(n lg n)
      • Ai(n) = Θ(n lg n)
      • Bi(n) = Θ(n)
    • it implies, for "all case":
      • Ti(n) = Ω(n) and Ti(n) = O(n lg n)

    P.S. For displaying Theta Θ , Omega Ω symbols, you need to have UTF-8 installed/be compatible.

提交回复
热议问题