ν μ λ ¬ (Heap Sort)
ν μ λ ¬μ μκ° λ³΅μ‘λκ° O(NlogN)μΈ μ λ ¬μΌλ‘, λ²λΈ / μ ν / μ½μ μ λ ¬μ λΉν΄ μ°μν μ±λ₯μ κ°μ§κ³ μλ€.
μ°μ ν μ λ ¬μ μ΄ν΄λ³΄μ.
νμ μλ£κ΅¬μ‘° μ€ νλλ‘, μ΄ 'Heap' μλ£κ΅¬μ‘°μ νΉμ±μ νμ©ν μ λ ¬ λ°©λ²μ΄λ€.
νμ μμ μ΄μ§νΈλ¦¬μ μΌμ’ μΌλ‘, μ¬λ¬ κ°λ€ μ€μμ μ΅μκ° νΉμ μ΅λκ°μ λΉ λ₯΄κ² μ°ΎκΈ° μν΄ μ€κ³λ μλ£κ΅¬μ‘°μ΄λ€.
νμ λμ¨ν μ λ ¬ μν(λ° μ λ ¬ μν)λ₯Ό μ μ§νκ³ , μ΄λ₯Ό μ½κ² νμ΄νλ©΄ λΆλͺ¨ λ
Έλμ ν€ κ°μ΄ μμ λ
Έλμ ν€ κ°λ³΄λ€ νμ ν°(μμ) μ΄μ§ νΈλ¦¬λ₯Ό λ§νλ€.
λΆλͺ¨ λ Έλμ ν€ κ°μ΄ μμ λ Έλμ ν€ κ°λ³΄λ€ ν° μ§, μμ μ§μ λ°λΌ νμ μ’ λ₯κ° λλλ€.
- μ΅λ ν (Max Heap) : λΆλͺ¨ λ Έλμ ν€ κ°μ΄ μμ λ Έλμ ν€ κ°λ³΄λ€ ν° ν → λ£¨νΈ λ Έλμ κ°μ₯ ν° μμκ° μμΉνκ² λλ€.
- μ΅μ ν (Min Heap) : λΆλͺ¨ λ Έλμ ν€ κ°μ΄ μμ λ Έλμ ν€ κ°λ³΄λ€ μμ ν → λ£¨νΈ λ Έλμ κ°μ₯ μμ μμκ° μμΉνκ² λλ€.
ν μ λ ¬μ μκ³ λ¦¬μ¦μ λ¨μνκ² λνλ΄λ©΄ λ€μκ³Ό κ°λ€.
1. μ λ ¬νκ³ μ νλ λ°°μ΄μ νμΌλ‘ λ§λ λ€. (μ΄ κ³Όμ μ heapifyλΌκ³ νλ€.)
2. μ λ ¬λ μμλ€μ΄ μ μ₯λ μλ‘μ΄ λ°°μ΄μ μμ±νλ€. (μ΄ λ°°μ΄μ μ λ ¬ λ°°μ΄μ΄λΌ λΆλ₯΄μ.)
3. νμ 루νΈλ Έλμ κ°μ μ λ ¬ λ°°μ΄μ appendνκ³ , λ£¨νΈ λ Έλμ κ°μ μμ νλ€.
4. μμ ν ν λλ¨Έμ§ νΈλ¦¬μ λν΄μ λ€μ νμΌλ‘ λ§λ λ€. (heapify)
5. νμ λ¨μ μμκ° νλλ μμ λκΉμ§ 3~4λ² κ³Όμ μ λ°λ³΅νλ€.
6. νμ λ¨μ μμκ° μμΌλ©΄, μ λ ¬ λ°°μ΄ μ μμλ€μ λͺ¨λ μ λ ¬μ΄ λμ΄μλ€. (Min Heapμ κ²½μ° μ€λ¦μ°¨μ, Max Heapμ κ²½μ° λ΄λ¦Όμ°¨μμΌλ‘ μ λ ¬μ΄ λλ€.)
ν μ λ ¬ νμ΄μ¬ μ½λ
ν μ λ ¬ μλ° μ½λ
ν μ λ ¬ μ₯λ¨μ
μ₯μ
- νμ O(NlogN)μ 보μ₯
- max λλ min κ°μ ꡬν λ μκ° λ³΅μ‘λλ O(1)μ΄λ€.
λ¨μ
- μΌλ°μ μΌλ‘ μλλ§ λΉκ΅νμλ©΄ ν΅μ΄ νκ· μ μΌλ‘ λ λΉ λ₯΄λ€. κ·Έλμ μ μ¬μ©νμ§ μμ.
'π§ͺ μ»΄ν¨ν°κ³Όν : CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μλ£κ΅¬μ‘°] Arrayμ LinkedListμ μ°¨μ΄ (μΈν°λ·° λλΉ) (0) | 2022.10.23 |
---|---|
[κ°λ°κ³΅ν΅] Call by valueμ Call by reference (Java, Python, C/C++) (0) | 2022.10.11 |
[Alogrithm] μ½μ μ λ ¬ (Injection Sort) (0) | 2022.09.03 |
[Algorithm] μ ν μ λ ¬ (Selection Sort) (0) | 2022.09.03 |
[Algorithm] λ²λΈ μ λ ¬ (Bubble Sort) (0) | 2022.09.03 |