私は、新しいノードをヒープに挿入するときに、通過する可能性のあるノードの量がlogNであると思います。それはなぜ(1 + logN)ですか?なぜ新しいノードをヒープに挿入するときに1 + logNの比較が必要なのですか?
答えて
これは、ノートの数が2の場合の境界ケースを考慮する必要があります。nです。 Nレベルのヒープは、一つより多くのオブジェクトが新しいレベルを開始追加ので、2つのN -1オブジェクトにフィット:
黒四角を3レベル・ヒープの7つの要素を表します。赤い要素は8番です。検索でこの最後の要素の場所に移動すると、ログ 8が3であっても、4つの比較が行われます。
あなたの答えに感謝しかし、私は4つの比較がある理由を理解していません。私にとっては、新たに追加された赤い四角が泳いでも3回しか見えません(3回の比較:赤い線、緑の線、青い線、合計3回) – user1888955
@ user1888955あなたはroot、rootの子と比較する必要があります、ルートの孫、赤いノード自体を検索して、探しているアイテムが見つかったことを確認します。 – dasblinkenlight
あなたのクイック返信ありがとうございます:)私はノード自体の比較を逃した。 – user1888955
- 1. PowerBuilderデータウィンドウで更新が必要なときに挿入する
- 2. パラメータが必要なときにGETとPOSTを比較する
- 3. mod_rewrite - RewriteCond - なぜ比較構文が必要ですか?
- 4. なぜ、nansを比較するときにscipy.stats.ttest_indが新しいRuntimeWarningを投げているのですか?
- 5. なぜインデックスを-1と比較するのですか?
- 6. ヒープにノードを挿入するときにバブルアップを使用する方法は?
- 7. なぜ、componentDidUpdateに新しく挿入されたdomノードが表示されないのですか?
- 8. Red Black Treeの挿入:挿入するとノードが赤くなるのはなぜですか?
- 9. テーブルのフィールド値を比較してデータベースに新しい値を挿入する
- 10. なぜ私はPostgreSQLに挿入できないのですか?
- 11. なぜ私はブーストPythonベクトルインデックススイートで比較演算子が必要ですか?
- 12. なぜ再配置するときにヒープからメモリを解放する必要がありますか?
- 13. dictsを `==`で比較できるのであれば、なぜassertDictEqualが必要ですか?
- 14. なぜフィールドの比較にANSI_NULLS OFFが機能しないのですか?
- 15. なぜキャスト演算子を比較に使用できないのですか?
- 16. Ruby BST:なぜこのコードは新しいノードを作るために「自己」を必要としますか?
- 17. JsonNodeに新しいノードを挿入する方法私は新しい値で、この新しいノードを構築することができるように
- 18. Numを0と比較できないのはなぜですか?
- 19. 挿入後にDataContextコレクションが更新されないのはなぜですか?
- 20. 注入gridViewにはVerifyRenderingInServerFormが必要です。しかし、なぜ?
- 21. ピボットが最初の要素でないときのカウント比較
- 22. mongodbレプリカセットに奇数の投票ノードが必要なのはなぜですか?
- 23. なぜ我々はanalysis_portが必要なときにanalysis_exportを必要とする
- 24. "if"文で '_' charと比較できないのはなぜですか?
- 25. bcryptでパスワードが正しいかどうかを比較するには塩が必要ないのはなぜですか?
- 26. SQL Server:挿入時にチャンクするときに、このロジックが機能しないのはなぜですか?
- 27. なぜ/きれいなターゲットが必要なのですか?
- 28. なぜ、多くのGUI CObjects(CButton)をスタックではなくヒープに置く必要があるのですか?
- 29. `pthread_mutex_trylock`があるときに` pthread_mutex_lock`が必要なのはなぜですか?
- 30. エンティティオブジェクトがデータを挿入しないのはなぜですか?
1つの要素を持つヒープに 'log(1)= 0'が挿入されるため、比較が行われます – harold
ありがとうございます。私はこれが正解でなければならないと思います。 – user1888955