int delete_max_heap() {
if(heapSize == 0) // ๋ฐฐ์ด์ด ๋น์ด์์ผ๋ฉด ๋ฆฌํด
return 0;
int item = maxHeap[1]; // ๋ฃจํธ ๋
ธ๋์ ๊ฐ์ ์ ์ฅ
maxHeap[1] = maxHeap[heapSize]; // ๋ง์ง๋ง ๋
ธ๋ ๊ฐ์ ๋ฃจํธ๋ก ์ด๋
maxHeap[heapSize--] = 0; // ํ ํฌ๊ธฐ๋ฅผ ํ๋ ์ค์ด๊ณ ๋ง์ง๋ง ๋
ธ๋ 0 ์ด๊ธฐํ
for(int i = 1; i*2 <= heapSize;) {
// ๋ง์ง๋ง ๋
ธ๋๊ฐ ์ผ์ชฝ ๋
ธ๋์ ์ค๋ฅธ์ชฝ ๋
ธ๋๋ณด๋ค ํฌ๋ฉด ๋
if(maxHeap[i] > maxHeap[i*2] && maxHeap[i] > maxHeap[i*2+1]) {
break;
}
// ์ผ์ชฝ ๋
ธ๋๊ฐ ๋ ํฐ ๊ฒฝ์ฐ, swap
else if (maxHeap[i*2] > maxHeap[i*2+1]) {
swap(i, i*2);
i = i*2;
}
// ์ค๋ฅธ์ชฝ ๋
ธ๋๊ฐ ๋ ํฐ ๊ฒฝ์ฐ
else {
swap(i, i*2+1);
i = i*2+1;
}
}
return item;
}