配列を昇順に並べると、バイナリヒープになります。この利点の欠点はありますか?はいの場合は、その理由は何ですか?配列を使用したバイナリヒープの形成ショートカット
答えて
「配列を昇順に並べ替えると、バイナリヒープになります。これは正しいです。 これは、配列を昇順で並べ替えるアルゴリズムによって異なります。最適な並べ替えアルゴリズムは、複雑さO(NLogN)
で実行します。
バイナリヒープを作成するアルゴリズムBuild_Heap
は、O(N)
の複雑さを持ちますが、
Counting Sort
などの非比較ソート方法を使用するまで、バイナリヒープを作成する複雑さは少なくともとatmost O(N^2)
になります。
バイナリヒープを作成する従来の方法が好都合です。
伝統的なBuild_Heap
インプレースバイナリヒープを作成するが、Counting Sort
はO(N)
時間がかかりますが、それは余分なスペースO(N)
が必要になりますが。
O(N)の時間に比較ソートを実行することはできません。比較ソーティングはO(N log N)です。非比較メソッド(基数ソートなど)は潜在的にO(N)ですが、余分なスペースが必要です。 –
@JimMischel:By-mistakeは、 'Counting'の代わりに' Comparison'を書きました。訂正してくれてありがとう。 – sameerkn
欠点は、配列のソートに従来のBuildHeapメソッドを使用するよりも時間がかかることです。 –