ํ (Heap) ?
๋ฐ์ดํฐ์์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๊ธฐ ์ํด ๊ณ ์๋ ์์ ์ด์ง ํธ๋ฆฌ(Complete Binary Tree)
- ์์ ์ด์ง ํธ๋ฆฌ : ๋
ธ๋๋ฅผ ์ฝ์
ํ ๋, ์ตํ๋จ ์ผ์ชฝ ๋
ธ๋๋ถํฐ ์ฐจ๋ก๋๋ก ์ฝ์
ํ๋ ํธ๋ฆฌ
ํ์ ์ฌ์ฉํ๋ ์ด์
- ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ , ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ์ผ๋ ค๋ฉด O(n)์ด ๊ฑธ๋ฆผ <--์๊ฐ๋ณต์ก๋
- ์ด์๋ฐํด, ํ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐพ์ผ๋ฉด, O(logn)์ด ๊ฑธ๋ฆผ
- ์ฐ์ ์์ ํ์ ๊ฐ์ด ์ต๋๊ฐ ๋๋ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์์ผํ๋ ์๋ฃ๊ตฌ์กฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ๊ตฌํ์ ํ์ฉ
ํ(Heap) ๊ตฌ์กฐ
- ํ์ ์ต๋๊ฐ์ ๊ตฌํ๊ธฐ ์ํ ๊ตฌ์กฐ(์ต๋ ํ, Max Heap)์, ์ต์๊ฐ์ ๊ตฌํ๊ธฐ ์ํ ๊ตฌ์กฐ(์ต์ ํ, Min Heap)๋ก ๋ถ๋ฅํ ์ ์์
- ํ์ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์๋ ์๋ฃ๊ตฌ์กฐ
- ๊ฐ ๋
ธ๋์ ๊ฐ์ ํด๋น ๋
ธ๋์ ์์ ๋
ธ๋๊ฐ ๊ฐ์ง ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๋ค. (์ต๋ ํ์ ๊ฒฝ์ฐ)
- ์์ ์ด์ง ํธ๋ฆฌ ํํ
ํ vs ์ด์งํ์ํธ๋ฆฌ
- ๊ณตํต์ : ๋๋ค ์ด์ง ํธ๋ฆฌ
- ์ฐจ์ด์
- ํ์ ๊ฐ ๋
ธ๋์ ๊ฐ์ด ์์ ๋
ธ๋๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์(Max Heap์ ๊ฒฝ์ฐ)
- ์ด์ง ํ์ ํธ๋ฆฌ๋ ์ผ์ชฝ ์์ ๋
ธ๋ < ๋ถ๋ชจ ๋
ธ๋ < ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋์ ๊ฐ
- ํ์ ์ด์งํ์ํธ๋ฆฌ์ ์กฐ๊ฑด์ธ ๊ฐ์ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์์น ์กฐ๊ฑด์ด ์์
- ๋ชฉ์
- ์ด์ง ํ์ ํธ๋ฆฌ : ํ์์ ์ํ ๊ตฌ์กฐ
- ํ : ์ต๋/์ต์๊ฐ ๊ฒ์์ ์ํ ๊ตฌ์กฐ
Heap vs Binary Search Tree