Skip to content

Latest commit

ย 

History

History
97 lines (65 loc) ยท 2.78 KB

File metadata and controls

97 lines (65 loc) ยท 2.78 KB

Heap

Heap(ํž™)์ด๋ž€?

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ

- ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ์˜ ์ผ์ข…์ด๋‹ค.(๋งˆ์ง€๋ง‰์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ์ž์‹๋“ค์ด ๊ฝ‰ ์ฑ„์›Œ์ง„ ์ด์ง„ํŠธ๋ฆฌ)
- ์—ฌ๋Ÿฌ ๊ฐ’ ์ค‘, ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ด๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋ฐ˜์ •๋ ฌ ์ƒํƒœ์ด๋‹ค.
- ํž™ ํŠธ๋ฆฌ๋Š” ์ค‘๋ณต๋œ ๊ฐ’์„ ํ—ˆ์šฉํ•œ๋‹ค. (์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ๋Š” ์ค‘๋ณต๊ฐ’ ํ—ˆ์šฉX) 

heap


์šฐ์„ ์ˆœ์œ„ ํ?

์šฐ์„ ์ˆœ์œ„์˜ ๊ฐœ๋…์„ ํ์— ๋„์ž…ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ
๋ฐ์ดํ„ฐ๋“ค์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜๊ฐ„๋‹ค
๋‚ด๋ถ€๊ตฌ์กฐ๊ฐ€ ํž™์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ธฐ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(NLogN)์ด๋‹ค

์šฐ์„ ์ˆœ์œ„ ํ ๊ตฌํ˜„

์šฐ์„ ์ˆœ์œ„ ํ๋Š” ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ํž™ ์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ์ค‘์—์„œ ํž™(heap)์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํšจ์œจ์ ์ด๋‹ค.

์šฐ์„ ์ˆœ์œ„ ํ ์‚ฌ์šฉ๋ฒ•

import java.util.PriorityQueue; //import

//intํ˜• priorityQueue ์„ ์–ธ (์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์ˆซ์ž ์ˆœ)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();

//intํ˜• priorityQueue ์„ ์–ธ (์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆซ์ž ์ˆœ)
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(Collections.reverseOrder());

ํž™์˜ ์ข…๋ฅ˜

1. ์ตœ๋Œ€ํž™

๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ
Key(parent) โ‰ฅ Key(child) 
๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋ฃจํŠธ๋…ธ๋“œ์— ์žˆ์Œ

maxHeap

2. ์ตœ์†Œํž™

๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ
Key(parent) โ‰ค Key(child)
๊ฐ€์žฅ ์ž‘์€ ๊ฐ’์ด ๋ฃจํŠธ๋…ธ๋“œ์— ์žˆ์Œ

maxHeap



ํž™ ํ‘œํ˜„

ํž™์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.
๊ฐœ๋ฐœ ํŽธ์˜์„ฑ๊ณผ ๊ฐ€๋…์„ฑ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด ์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋ฃจํŠธ ๋…ธ๋“œ์˜ ์ธ๋ฑ์Šค i๊ฐ€ 1์ธ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋…ธ๋“œ i์˜ ๋ถ€๋ชจ๋…ธ๋“œ ์ธ๋ฑ์Šค : [i/2]
  • ๋…ธ๋“œ i์˜ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ ์ธ๋ฑ์Šค : 2*i
  • ๋…ธ๋“œ i์˜ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ ์ธ๋ฑ์Šค : 2*i + 1

maxHeap



์‚ฌ์šฉ ์‚ฌ๋ก€

- ์šฐ์„ ์ˆœ์œ„ ํ
- Dijkstra ์•Œ๊ณ ๋ฆฌ์ฆ˜
- ํž™ ์ •๋ ฌ