普通隊列遵照先進先出(FIFO)的規則,而優先隊列雖然也叫隊列,規則有所不一樣:web
優先隊列能夠用下面幾種數據結構來實現:數組
若是用線性數據結構來實現優先級隊列,則時間複雜度均爲 O(n)。而若是用二叉堆來實現,時間複雜度能夠提升到 O(logn)。下面以二叉堆爲例。數據結構
二叉堆有兩個限制:svg
根據二叉堆上面的性質,能夠用一個數組來保存二叉堆中的結點。其中,對於數組中任一個秩爲 x 的元素,其對應二叉樹中,父子結點的秩分別爲:.net
二叉堆的構建,能夠參考 這裏。xml