學習歷程 資料流的中位數

2021-10-07 10:20:09 字數 788 閱讀 6724

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

解讀,有乙個會不斷增長的資料,一直在新增新的數。需要求的每次新加數後,求整體的中位數(從第乙個數開始到新的數)

例如輸入 1

中位數 1

再輸入 2

中位數 1.5

再輸入 3

中位數 2

再輸入 0

中位數 0.5

class

solution

else

if(num > p.

top())

//如果新的數比 前半部分中最大值還大,那麼就將其加入後半部分

else

if(p.

size()

== q.

size()

+2)//如果連續多個(平衡後兩個)數都加入了前半部分,那就取前半部分的堆頂,放入後半部分

else

if(p.

size()

== q.

size()

-1)//如果連續多個數都加入了後半部分,那就取後半部分的堆頂,放入前半部分。這個例子中,設定前僅半部分可以比後半多乙個,所以當後半多1個的時候就放入前半

}//獲取當前平均值

double

getmedian()

};

資料流的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。我們使用insert 方法讀取資料流,使用getmedian 方法獲取當前讀取資料的中位數。coding utf ...

資料流的中位數

資料流的中位數 中位數是有序列表中間的數。如果列表長度是偶數,中位數則是中間兩個數的平均值。例如,2,3,4 的中位數是 3 2,3 的中位數是 2 3 2 2.5 設計乙個支援以下兩種操作的資料結構 示例 addnum 1 addnum 2 findmedian 1.5 addnum 3 find...

資料流的中位數

問題定義 不斷有數字過來,問在當前所有數字中的中位數是多少 優先佇列 堆 我們可以用乙個大根堆和乙個小根堆分別維護乙個有序數,使得小根堆的所有數字都大於大根堆,這就要求小根堆的堆頂要大於等於大根堆的堆頂。為了求得中位數,我們需要小根堆和大根堆的數字個數相等或相差一。我們可以用優先佇列實現如下 pri...