常見面試題之一: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 線性...