資料流中的中位數
如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。
解題思路:維護乙個大堆和乙個小堆,大堆表示序列前一半數,小堆表示序列後一半數,保持兩個堆的元素個數之差小於等於1,也就是說大堆的元素個數比小堆多1個,或者兩個堆相等。
#include#include #include #includeusing namespace std;
//在進行size減法的時候遇到了乙個問題,就是得到的是無符號整數,不能進行判斷大小的比較,比如
class solution
auto res2 = p1.size() - p2.size(); //無符號整數
if ((int)(res2) == -1)
}double getmedian() };
int main()
; vectorvec(data,data+9);
solution s;
for (int i = 0; i < 8; i++)
system("pause");
return 0;
}
資料流中的中位數
如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。class solution double getmedian else private vectordata c...
資料流中的中位數
如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。簡單題 找中位數 coding utf 8 class solution x def insert self,nu...
資料流中的中位數
1 題目描述 如何得到乙個資料流中的中位數?如果從資料流中讀出奇數個數值,那麼中位數就是所有數值排序之後位於中間的數值。如果從資料流中讀出偶數個數值,那麼中位數就是所有數值排序之後中間兩個數的平均值。2 2.1 原理 用兩個堆實現,左邊是做大堆,右邊是最小堆,當資料總數是偶數的時候,中位數是兩個堆首...