1. 程式人生 > >[劍指offer] 63. 資料流中的中位數

[劍指offer] 63. 資料流中的中位數

題目描述

如何得到一個數據流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用Insert()方法讀取資料流,使用GetMedian()方法獲取當前讀取資料的中位數。

用一個大頂堆和一個小頂堆,維持大頂堆的數都小於等於小頂堆的數,且兩者的個數相等或差1。平均數就在兩個堆頂的數之中。