章節連結
重念一次早該補起來的「資料結構與演算法」。這篇筆記優先序列 ( Priority Queue ) 的索引數字並新增資料。
課程相關資訊
[連結]:https://hiskio.com/courses/572/lectures/29879
本篇範圍:Chapter 9
請注意:本系列文章為個人對應課程的消化吸收後,所整理出來的內容。換言之,並不一定會包含全部的課程內容,也有可能會添加其他資源來說明。
內容
1. 若以 parentNode 來看,那 childNodes 分別為 2x+1 和 2x+2
2. 若以 childNode 來看,那 parentNode 為 Math.floor((x-1)/2)
Enqueue 加入節點
1. 若加入到一個空序列中,那就直接加入
2. 若原先的空序列有值,那就先行加入,接著進行互換動作,直到符合 Priority Queue 的原則
a. newIndex 初始為新的長度 – 1,而可以求出 parentIndex
b. 依照設定的優先順序,且 parentIndex 依舊大於等於 0 的狀態下,執行 while loop。
b-1. 互換 child 和 parent
b-2. 修改 newIndex 和 parentIndex,這樣 while loop 就會繼續執行
3. 呈現的結果,會確保第一個一定是 Priority 最高的,至於其他的就不保證了