用bitmap實現中位數的演算法

2021-08-25 04:32:34 字數 427 閱讀 1028

常見面試題之一:50億個整數,記憶體限制為1g,找出中位數。

50億個整數用bitmap來儲存的話,大約150m的空間就足夠了。

下面是具體的演算法,用php實現。

define("mask", 0x1f); $source = array(1, 74, 4, 256, 1024, 110, 111, 112, 123, 112, 100); $array = array(); $count = 0; foreach($source as $num) $count = intval($count >> 1) + 1; // cal middle number for($i = 0;;$i++) $sum = 0; while($num) } $num >>= 1; $sum++; } } /* * set number to bit map */ function set($i) }

用bitmap實現中位數的演算法

常見面試題之一 50億個整數,記憶體限制為1g,找出中位數。50億個整數用bitmap來儲存的話,大約150m的空間就足夠了。下面是具體的演算法,用php實現。define mask 0x1f source array 1,74,4,256,1024,110,111,112,123,112,100 ...

BFPRT(中位數的中位數)演算法

又稱為 中位數的中位數演算法 該演算法由 blum floyd pratt rivest tarjan 在1973年提出,最壞時間複雜度為o n 最差的空間複雜度為o logn 演算法步驟 1 將 n 個元素劃分為 n 5 個組,每組 5 個元素,若有剩餘,捨去 2 使用排序方法找到 n 5 個組中...

中位數的中位數

參照王曉東的演算法設計 中位數的中位數,即將一串數分成n段,求其排好序了的中間那個數,再把這些所有中位數再求一次中位數。for int i 0 i r p 4 5 i 找中位數的中位數,r p 4即上面所說的n 5 int x lineselect a,p,p r p 4 5,r p 4 10 線性...