ヒープは通常、(完全な) ツリーとして表示できるオブジェクトの配列です。そして、以下のルールは常に満たされます。 ヒープは完全な二分木である ノードは常にその子ノードよりも大きくなります (または小さくなります)。 したがって、2 番目の特性に従って、バイナリ ヒープは最大ヒープ (または最大ヒープ) と最小ヒープ (または最小ヒープ) に分割されます。 上の図では、1 2 は大きなトップヒープ、3 4 は小さなトップヒープです。ヒープかどうかを判断する条件: 「ルート ノードから任意のノードまでのパス上のノード シーケンスの順序です。シーケンスが順序どおりか逆順かは、max-heap と min-heap によって決まります。」 Python は「ヒープ」データ型を提供しておらず、リストを直接ヒープとして扱います。 Pythonが提供するheapqパッケージは、ヒープ操作を実行するためのツール機能を提供するいくつかの関数を提供します。
ヒープソート ヒープ内に要素を挿入した後、その要素が再びヒープの特性を満たすように調整する必要があります。このプロセスは、ヒープ化と呼ばれます。 では、ヒープソートの基本的な考え方は何でしょうか?
次に例を示します (リソースは Wang Zheng のアルゴリズムから取得)。たとえば、上記の最大ヒープにデータ 22 を追加します。 ヒープ化は非常に簡単で、ノードがあるパスを上または下に移動し、比較して交換するだけです。 ヒープソートの削除操作は、通常、ヒープの最上位要素を参照します。ヒープの最上位要素を削除した後、2 番目に大きい要素をヒープの最上位に配置する必要があります。すると、2 番目に大きい要素が必ず左と右の子ノードに表示されます。 次に、2 番目に大きいノードを繰り返し削除し、リーフ ノードが削除されるまでこれを繰り返します。しかし、これによりアレイ ホールの問題が発生します。 したがって、ここでもう 1 つのトリックがあります。つまり、ヒープの最上位要素を削除するときに、直接削除することはできません。ヒープの最上位要素を最後の要素と交換し、条件が満たされるまでヒープの特性に応じてヒープを調整する必要があります。 ソート処理では、ソートするシーケンスの長さから毎回 1 を減算し、次にこれら 2 つの手順を実行します。 以下は、Python の heapq モジュールを使用して実装されたヒープソートの簡単なコードです。
heapq モジュールを使用しない場合は、プッシュ ソートのヒープ ソートにおけるヒープ構築プロセスを理解する必要があります。 配列をその場でヒープに構築します。別の配列を使用せずに元の配列を操作します。ヒープを構築するには 2 つの方法があります。 ヒープ構築の最初の方法は、配列データを前から後ろへ処理し、各データがヒープ内に挿入されるときに下から上に積み重ねられることです。 2 番目の実装アイデアは、配列を後ろから前に処理し、各データを上から下に積み重ねることです。
つまり、ノードの添字が i の場合、左の子ノードの添字は 2∗i+1、右の子ノードの添字は 2∗i+2、親ノードの添字は となります。
ヒープソートは、ソート処理中にヒープの最後のノードとヒープの最上位ノードを交換する操作があるため、同じ値を持つデータの元の相対順序が変更される可能性があるため、安定したソートアルゴリズムではありません。ヒープソートの全体的な時間計算量は O(nlogn) です。 参考資料 https://github.com/MaoliRUNsen/runsenlearnpy100 |
<<: 2021年、民間ドローン分野では5つの大きなトレンドが見られる
>>: アルゴリズム: Javascript をエレガントに使用して構造ツリーを再帰的に描画する方法
多くの企業は、短期的には利益が見込めないため、AIパイロットプロジェクトを推進できず、AIプロジェク...
現在、機械学習とディープラーニング技術は、IoT 向け人工知能の世界市場で 5.7% の CAGR ...
今日は、実際の戦闘でよく使われる26のヒントを紹介します。これにより、出力がより効果的になります。見...
ディズニーの新しいロボットがデビュー!では早速、どんな感じか見てみましょう——大きく輝く目、揺れる頭...
近年、ディープラーニングの分野における畳み込みニューラルネットワーク(CNN または ConvNet...
グーグルの人工知能研究責任者ジェフ・ディーン氏によると、同社は人工知能プログラムを搭載したソフトウェ...
この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...
全国的な大学入試が進行中で、百度のAI技術も「大学入試」に直面している。 6月7日、大学入試の中国語...
暴走列車が線路を走っています。5人が線路に縛られており、列車に轢かれそうになっています。この時点で、...
翻訳者 |ブガッティレビュー | Chonglouこの記事では、無料で使いやすい新しいクラウドIDE...
[[201727]]序文AlexNet が ILSVRC 2012 ImageNet 画像分類コンテ...