ヒープは通常、(完全な) ツリーとして表示できるオブジェクトの配列です。そして、以下のルールは常に満たされます。 ヒープは完全な二分木である ノードは常にその子ノードよりも大きくなります (または小さくなります)。 したがって、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 をエレガントに使用して構造ツリーを再帰的に描画する方法
私は、機械学習コミュニティで手動の特徴エンジニアリングが非常に人気があった 2013 年から自然言語...
深層強化学習は近年人気が出てきている技術です。深層強化学習の制御および意思決定プロセスには、状態、ア...
[[388530]] [51CTO.com クイック翻訳] 「人工知能」は今日では人気の用語となり、...
[[438829]]発進時に左ウィンカーを出し、歩行者がいる場合はスピードを落として迂回し、障害物が...
[[404690]]長年にわたり、多くの企業がロボット、自動化、人工知能などのテクノロジーからより多...
アリ側1. 自己紹介:私はXXXの修士課程の学生で、機械学習を専攻しています。私の研究分野はディープ...
海外メディアの報道によると、アマゾンのハードウェア研究開発部門Lab126は、「Vesta」(ヴェス...
現在、金融サービス業界にとっての朗報は、フィンテックの戦いがまだ終わっておらず、始まったばかりだとい...
新たな科学技術革命と産業革命の到来とともに、デジタル経済は第四次産業革命の重要な礎となり、新たな組織...
人工知能(AI)は急速に進歩していますが、人間にとってその強力なモデルは「ブラックボックス」です。モ...
画像分類を始めたいが、どこから始めればよいか分からない。どの事前トレーニング済みネットワークを使用す...
[[385322]]春節が過ぎ、広州のアパレル工場は「労働者の採用難」という問題に直面した。広州服装...