์•Œ๊ณ ๋ฆฌ์ฆ˜

[Data Structure] ํž™ (Heap)

jjingle 2024. 1. 29. 15:16

ํž™ (Heap) ?

๋ฐ์ดํ„ฐ์—์„œ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ(Complete Binary Tree)
- ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ : ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ, ์ตœํ•˜๋‹จ ์™ผ์ชฝ ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์‚ฝ์ž…ํ•˜๋Š” ํŠธ๋ฆฌ

 

 

ํž™์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

  • ๋ฐฐ์—ด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ , ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด O(n)์ด ๊ฑธ๋ฆผ <--์‹œ๊ฐ„๋ณต์žก๋„
  • ์ด์—๋ฐ˜ํ•ด, ํž™์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์œผ๋ฉด, O(logn)์ด ๊ฑธ๋ฆผ
  • ์šฐ์„ ์ˆœ์œ„ ํ์™€ ๊ฐ™์ด ์ตœ๋Œ€๊ฐ’ ๋˜๋Š” ์ตœ์†Œ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„์•ผํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„์— ํ™œ์šฉ

 

 

ํž™(Heap) ๊ตฌ์กฐ

  • ํž™์€ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ(์ตœ๋Œ€ ํž™, Max Heap)์™€, ์ตœ์†Œ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์กฐ(์ตœ์†Œ ํž™, Min Heap)๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Œ
  • ํž™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
    1. ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’์€ ํ•ด๋‹น ๋…ธ๋“œ์˜ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง„ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. (์ตœ๋Œ€ ํž™์˜ ๊ฒฝ์šฐ)
    2. ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ ํ˜•ํƒœ

 

ํž™  vs  ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ

  • ๊ณตํ†ต์  : ๋‘˜๋‹ค ์ด์ง„ ํŠธ๋ฆฌ
  • ์ฐจ์ด์ 
    • ํž™์€ ๊ฐ ๋…ธ๋“œ์˜ ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์Œ(Max Heap์˜ ๊ฒฝ์šฐ)
    • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ < ๋ถ€๋ชจ ๋…ธ๋“œ < ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐ’
    • ํž™์€ ์ด์ง„ํƒ์ƒ‰ํŠธ๋ฆฌ์˜ ์กฐ๊ฑด์ธ ๊ฐ’์˜ ํฌ๊ธฐ์— ๋”ฐ๋ฅธ ์œ„์น˜ ์กฐ๊ฑด์ด ์—†์Œ
  • ๋ชฉ์ 
    • ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ : ํƒ์ƒ‰์„ ์œ„ํ•œ ๊ตฌ์กฐ
    • ํž™ : ์ตœ๋Œ€/์ตœ์†Œ๊ฐ’ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ๊ตฌ์กฐ

Heap vs Binary Search Tree