資料流中的中位數

2021-09-24 15:29:32 字數 525 閱讀 4688

思路:偶數時插入最小堆:如果插入的數比最大堆的數小,則插入最大堆,最大堆中的最大數插入最小堆。

奇數時插入最大堆:如果插入的數比最小堆的數大,則插入最小堆,最小堆中的最小數插入最大堆。

最終輸出:

如果是奇數個數:輸出maxheap.peek()/1.0;

如果是偶數個數:輸出是(maxheap.peek()+minheap.peek())/2.0;

priorityqueue優先佇列,堆,預設小頂堆。

priorityqueueminheap=new priorityqueue();

priorityqueuemaxheap=new priorityqueue(11,new comparator()

} );

private int count;

public void insert(integer num)

maxheap.offer(num);}}

public double getmedian()

資料流中的中位數

資料流中的中位數 如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。解題思路 維護乙個大堆和乙個小堆,大堆表示序列前一半數,小堆表示序列後一半數,保持兩個堆的元素個...

資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。class solution double getmedian else private vectordata c...

資料流中的中位數

如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。簡單題 找中位數 coding utf 8 class solution x def insert self,nu...