ヒープソートに関する質問があります。それはアルゴリズムの本で述べているA.heap-size<= A.length
私は2つの違いを理解していない。配列がヒープを表す場合、A.heap-size
がA.length
より小さい可能性があります。私はA.heap-size
がヒープ内の要素の数を表していることを知っています、なぜそれは完全に配列内の項目の数に等しいだけではありませんか?A.lengthとA.heap-sizeの違いは何ですか?
答えて
ヒープソートの不変量は、n要素配列の最初のk要素がk最小要素のヒープであり、最後のn-k要素がソート順のn-k最大要素であることです。後者の要素は、ヒープが配列全体を占有しない理由です。
あなたはもっと具体的になりますか?私は違いを理解できませんでした – caesar
ちょうど答えを広げる。その本をさらに読む。
A.heap_size
の配列は、ヒープ(max_heapまたはmin_heap)構造要素が配置される場所です。並べ替えやキューイングの範囲で意味があります。あなたは正しい:これはヒープ内の要素の数ですが、それはヒープソートの最初の繰り返しでA.length
に等しいです。次の反復で
、A[i] = A[A.length]
(アレイA内の最後の要素)とmax_heapツリー(A[1]
)のルートを交換した後に、A[1]
要素がAの最後の要素となり、A.heap_sort
値は1とmax_heap減少します構造体はmax_heapified:A[Parent(i)] >= A[i]
でなければなりません。Parent(i)
はヒープツリーのi/2を返します。
A.lengthはありません与えられたA.heapサイズのに対し、配列の要素の合計与えます(これは私を助けた)にあるどの要素のノーヒーププロパティ........およびA.length-A.heapサイズに従っている要素のソートされた順序またはいいえ、または今でもソートされていないし、将来ソートする必要があります。
- 1. difftimeと ' - 'の違いは何ですか?
- 2. A`と ``の違いは何ですか[:] `
- 3. `&`と `ref`の違いは何ですか?
- 4. バックスティックと$()の違いは何ですか?
- 5. `##`と `hashCode`の違いは何ですか?
- 6. "$^N"と "$ +"の違いは何ですか?
- 7. #{} $ {}と%{}の違いは何ですか?
- 8. typedefとの違いは何ですか?
- 9. %Qと%{}の違いは何ですか?
- 10. `==`と `is`の違いは何ですか?
- 11. $と$$の違いは何ですか?
- 12. NodeJS:「./ ..」と「..」の違いは何ですか?
- 13. $ dirtyと$ invalid:違いは何ですか?
- 14. Backbone.jsとPusherapp - 違いは何ですか?
- 15. libspeとlibspe2?違いは何ですか?
- 16. リストと何か([_])と何か(_)の違い
- 17. decodeURIComponentとunescapeの違いは何ですか?unescapeの問題は何ですか?
- 18. コロンの配置の違いは何ですか:何かと何か:
- 19. GoogleのDremelとは何ですか? Mapreduceとの違いは?
- 20. 重要な違いは何ですかext2-ext3とext3-ext4の違いは何ですか?
- 21. 「アソシエーション」と「リレーション」という用語の違いは何ですか?
- 22. グロムとは何ですか? mapPartitionsとの違いは?
- 23. AndroidでThread.run()とHandler.post()とServiceの違いは何ですか?
- 24. Androidでは、MotionEventのgetAction()とgetActionMasked()の違いは何ですか?
- 25. XSLT属性の違いとは何か
- 26. nHibernateのICriteriaとICriterionの違いと利点は何ですか?
- 27. BasicHttpsBindingとWsHttpBindingのトランスポートセキュリティとの違いは何ですか?
- 28. MSBuildの@と$と%の違いは何ですか?
- 29. middlegenとXDocletの使用とその違いは何ですか?
- 30. C++の "new"と "malloc"と "calloc"の違いは何ですか?
書籍のヒープソートの実装のように、ヒープの配列の最初のセクションとソートされた要素の配列の2番目のセクションを使用します。ヒープは 'A.length'要素で始まりますが、max要素を削除するとヒープが縮小します。 – rliu