n個の要素のバイナリヒープがあり、さらにn個の要素を挿入したいとします(必ずしも次々に挿入する必要はありません)。これに必要な合計時間はどれくらいですか?
1回の挿入でlognが必要になるため、シータ(n logn)だと思います。
n個の要素のバイナリヒープがあり、さらにn個の要素を挿入したいとします(必ずしも次々に挿入する必要はありません)。これに必要な合計時間はどれくらいですか?
1回の挿入でlognが必要になるため、シータ(n logn)だと思います。
given : n 個の要素のヒープと、さらに n 個の要素が挿入されます。したがって、最終的には 2*n 要素になります。ヒープは2つの方法で作成できるため、1.連続挿入と2.ヒープの構築方法。これらのビルド ヒープ メソッドの中で、ヒープを構築するのに O(n) 時間かかり ます。. したがって、必要な合計時間は O(2*n) であり、これは O(n) と同じです
与えられたと仮定します:
次の挿入プロパティがあります。
したがって、すべてのケースについて、
最悪の場合は、新しい最小値を挿入するため、アップヒープはブランチ全体を移動する必要があります。
BestCase は、minimal-heap (最上位に最小のヒープ) の場合に、BIG (更新されたブランチで最大) 値を挿入する場合です (したがって、up-heap はすぐに停止します)。
すでに n 個の要素を含むヒープでの一連の n 操作について質問しましたが、サイズは大きくなります
from n to 2*n
漸近的には...
n=Θ(n)
2*n=Θ(n)
方程式を単純化するもの。( nの成長は一定の係数によるものであるため、心配する必要はありません)。
したがって、「n回の挿入」操作があります。
PS Theta Θ 、 Omega Ω 記号を表示するには、UTF-8 がインストールされている/互換性がある必要があります。
theeta(nlogn) ではありません... その順序 (nlogn) は、一部の挿入が正確な logn 時間よりも短い時間で済むためです... したがって、n 個の挿入の場合、<=nlogn に時間がかかります
=> 時間計算量=O(nlogn)