๐ Computer Science/Data Structure
[์๋ฃ๊ตฌ์กฐ] ํ(Heap)
hyebin (Helia)
2023. 3. 13. 15:41
๋ฐ์ํ
ํ(Heap)
- ์์ ์ด์งํธ๋ฆฌ ๊ธฐ๋ฐ์ ์๋ฃ๊ตฌ์กฐ
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ๋ค ์ค์์ ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ์๋ด๋๋ก ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ
- ์ฐ์ ์์ ํ๋ฅผ ์ํด ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ
- ๋ฐ์ ๋ ฌ์ํ(๋์จํ ์ ๋ ฌ์ํ) ์ ์ง
- ํฐ ๊ฐ์ด ์์์ ์๊ณ ์์ ๊ฐ์ด ํ์์ ์๋ ์ ๋
- ์ค๋ณต๋ ๊ฐ ํ์ฉ
ํ์ ์ข ๋ฅ
- ์ต๋ ํ(max heap)
- ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์๋ ธ๋์ ํค ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์์ ์ด์งํธ๋ฆฌ
- ์ต์ ํ(min heap)
- ๋ถ๋ชจ ๋ ธ๋์ ํค ๊ฐ์ด ์์ ๋ ธ๋์ ํค ๊ฐ ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ด์งํธ๋ฆฌ
ํ์ ํ์ฉ
- ์๋ฎฌ๋ ์ด์ ์์คํ
- ๋คํธ์ํฌ ํธ๋ํฝ ์ ์ด
- ์ด์ ์ฒด์ ์์์ ์์ ์ค์ผ์ฅด๋ง
- ์์น ํด์์ ์ธ ๊ณ์ฐ
ํ์ ๊ตฌํ
- ํ์ ์ ์ฅํ๋ ํ์ค์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ ๋ฐฐ์ด
- ๊ตฌํ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ธ 0์ ์ฌ์ฉ๋์ง ์์
- ํน์ ์์น์ ๋
ธ๋ ๋ฒํธ๋ ์๋ก์ด ๋
ธ๋๊ฐ ์ถ๊ฐ๋์ด๋ ๋ณํ์ง ์์
- (ex ๋ฃจํธ ๋ ธ๋(1)์ ์ค๋ฅธ์ชฝ ๋ ธ๋ ๋ฒํธ๋ ํญ์ 3)
- ๋ถ๋ชจ ๋
ธ๋์ ์์ ๋
ธ๋์ ๊ด๊ณ
- ์ผ์ชฝ ์์ index = (๋ถ๋ชจ index) * 2
- ์ค๋ฅธ์ชฝ ์์ index = (๋ถ๋ชจ index) * 2 + 1
- ๋ถ๋ชจ index = (์์ index) / 2
ํ์ ์ฝ์
- ํ์ ์๋ก์ด ์์๊ฐ ๋ค์ด์ค๋ฉด, ์ผ๋จ ์๋ก์ด ๋ ธ๋๋ฅผ ํ์ ๋ง์ง๋ง ๋ ธ๋์ ์ด์ด์ ์ฝ์
- ์๋ก์ด ๋ ธ๋๋ฅผ ๋ถ๋ชจ ๋ ธ๋๋ค๊ณผ ๊ตํํด์ ํ์ ์ฑ์ง์ ๋ง์กฑ์ํด
ํ์ ์ญ์
- ์ต๋ ํ์์ ์ต๋๊ฐ์ ๋ฃจํธ ๋
ธ๋์ด๋ฏ๋ก ๋ฃจํธ ๋
ธ๋๊ฐ ์ญ์
- ์ต๋ ํ(max heap)์์ ์ญ์ ์ฐ์ฐ์ ์ต๋๊ฐ์ ๊ฐ์ง ์์๋ฅผ ์ญ์ ํ๋ ๊ฒ์ด๋ค.
- ์ญ์ ๋ ๋ฃจํธ ๋ ธ๋์๋ ํ์ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ๊ฐ์ ธ์ด
- ํ์ ์ฌ๊ตฌ์ฑ
ํ ์ ๋ ฌ(heap sort) ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ฅ ํฐ ๊ฐ์ด ๋ฃจํธ์ ์์นํ๋ ํน์ง์ ์ด์ฉํ์ฌ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ฅ ํฐ ๊ฐ์ธ ๋ฃจํธ๋ฅผ ๊บผ๋ด๋ ์์ ๋ฐ๋ณตํ๊ณ ๊ทธ ๊ฐ์ ๋์ด๋์ผ๋ฉด ๋ฐฐ์ด ์ ๋ ฌ ์๋ฃ
- ์๊ฐ๋ณต์ก๋๋
- ๋์ ๊ณผ์
-
- root๋ฅผ ๊บผ๋
- ๋ง์ง๋ง ์์๋ฅผ root๋ก ์ด๋
- ์๊ธฐ๋ณด๋ค ํฐ ๊ฐ์ ๊ฐ์ง๋ ์์ ์์์ ์๋ฆฌ๋ฅผ ๊ตํํ๋ฉฐ ๋ด๋ ค๊ฐ๋ ์์
์ ๋ฐ๋ณต
- ์ด๋ ์์์ ๊ฐ์ด ์๊ธฐ๋ณด๋ค ์๊ฑฐ๋ ๋ฆฌํ(leaf)์ ๋ค๋ค๋ฅด๋ฉด ์ข ๋ฃ
-
๋ฐ์ํ