用堆維護數組的中位數

 

 

令數組L的中位數爲m,用一個最大堆存儲數組L中不大於m的元素,用一個最小堆存儲數組L中不小於m的元素,其中這兩個堆均不包含中位數m。每次往數組L插入新元素x時,若x<m,則將其插入最大堆,否則插入最小堆。若插入新元素後導致m不再是中位數(即兩個堆的元素數目相差2個或2個以上),則將當前的中位數m插入到元素數量較少的那個堆中,然後令元素數量較多的那個堆的堆頂元素爲新的中位數,並將該堆頂元素從堆中刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章