1. 程式人生 > >演算法愛好者——演算法題:堆化 ? 待解決

演算法愛好者——演算法題:堆化 ? 待解決

給出一個整數陣列,寫一個函式將陣列堆化。堆化操作就是把它變成一個最小堆陣列。對於堆陣列A,A[0] 是堆的根,並對於每個 A[i],A [i * 2 + 1] 是 A[i] 的左兒子並且 A[i * 2 + 2] 是 A[i] 的右兒子。

說明:

什麼是堆?

堆是一種資料結構,它通常有三種方法:push, pop 和 top。其中,“push” 新增新的元素進入堆,“pop” 刪除堆中最小/最大元素,“top” 返回堆中最小/最大元素。
什麼是堆化?

把一個無序整數陣列變成一個堆陣列。如果是最小堆,每個元素 A[i],我們將得到 A[i * 2 + 1] >= A[i] 和 A[i * 2 + 2] >= A[i]

如果有很多種堆化的結果?返回其中任何一個。

格式

輸入行輸入一個整數陣列,最後輸出經過堆化後的陣列。

樣例輸入

[ 3,2,1,4,5 ]

樣例輸出

[ 1,2,3,4,5 ]

思路