10 億個數取中位數

2021-08-30 14:11:31 字數 519 閱讀 9201

10 億個數取中位數

1、取 16*1024 個數,生成乙個 treemap 。取得最大值 max 和最小值 min。

2、構造乙個1024個元素的計數陣列 t[i],對最初的 1024 個數按區間計數;

對 min 和 max 進行 1024 個等分,各等分值為 n[i]。

當資料 n[a]3、將大於 n[512-8] 且小於 n[512+8] 的數放入乙個新的 treemap。

4、開始讀取之後的資料,執行2 和 3的操作;

5、根據區間計數,獲知中位數處於n[x]區間。

如果正好處於 n[512-8] 且小於 n[512+8],則可以直接查詢資料。

否則,重新讀取一次資料,將處於 n[x] 區間的數,放入乙個 treemap 中,獲得中位數。

6、如果某個區間的資料量超過 200萬,則對該區間進行分割槽,分成 1024 個區,並進行計數。

嗯嗯,計數要智慧型一些,可以分拆、合併計資料區間。最大值最小值要隨時取。

唔唔,有空將**寫出來試試。不知道是否可行。

求100億個數的中位數

給定100億個無符號的亂序的整數序列,如何求出這100億個數的中位數 中位數指的是排序後最中間那個數 乙個無符號整數的大小為4b,則100億個數的大小為40gb,如果記憶體夠大的話可以對這100億個數載入到記憶體中,然後使用堆排序或者快速排序進行排序,取出中位數即可。使用快排時,每次劃分之後只需要比...

求100億個數的中位數

1 題目描述 給定100億個無符號的亂序的整數序列,如何求出這100億個數的中位數 中位數指的是排序後最中間那個數 2 解題思路一 乙個無符號整數的大小為4b,則100億個數的大小為40gb,如果記憶體夠大的話可以對這100億個數載入到記憶體中,然後使用堆排序或者快速排序進行排序,取出中位數即可。使...

如何從 5 億個數中找出中位數

從 5 億個數中找出中位數。資料排序後,位置在最中間的數就是中位數。當樣本數為奇數時,中位數 n 1 2 當樣本數為偶數時,中位數為 n 2 與 1 n 2 的均值。如果這道題目沒有記憶體大小的限制,則可以把所有的數字排序後找出中位數,但是最好的排序演算法的時間複雜度都是 o nlogn n 為數字...