現在 有10億個int型的數字(JAVA中 int 型占4B),以及一台可用內存為1GB的機器,如何找出這10億個數字的中位數? 中位數定義:數字排序之后,位於中間的那個數。比如將10億個數字進行排序(位置從1到10億),排序之后,位於第5億個位置的那個數 就是中位數。 關於中位數 ...
內存足夠的情況: 可以使 用類似quick sort的思想進行,均攤復雜度為O n ,算法思想如下: 隨機選取一個元素,將比它小的元素放在它左邊,比它大的元素放在右邊 如果它恰好在中位數的位置,那么它就是中位數,可以直接返回 如果小於它的數超過一半,那么中位數一定在左半邊,遞歸到左邊處理 否則,中位數一定在右半邊,根據左半邊的元素個數計算出中位數是右半邊的第幾大,然后遞歸 到右半邊處理 內存不足的 ...
2015-09-17 17:23 0 4026 推薦指數:
現在 有10億個int型的數字(JAVA中 int 型占4B),以及一台可用內存為1GB的機器,如何找出這10億個數字的中位數? 中位數定義:數字排序之后,位於中間的那個數。比如將10億個數字進行排序(位置從1到10億),排序之后,位於第5億個位置的那個數 就是中位數。 關於中位數 ...
以下是轉載的:個人感覺第四種方法很巧妙,O(N)復雜度最好也最快!第二種方法不太理解~ 騰訊一面問到了,用的算法導論中的Kth算法,期望時間復雜度為O(n)。后來想了想,萬一數據多的來根本不能一次讀入內存,這個時候該如何解決呢? 題目如下:只有2G內存的pc機,在一個存有10G個整數 ...
問題描述:給一個無序數組,找到其中位數,並說出該算法的時間復雜度以及空間復雜度。 解題方法一: 中位數:當數組元素個數為奇數n時,中位數=a[n/2]。當元素個數為偶數時,中位數=( a[n / 2] + a[ ( n + 1 ) / 2 ]) 按照這個中位數定義來求解。利用 ...
比如三個整數是 10 12 11,輸出11 還是按照從結果出發思考問題 我們用middle變量來存放中位數 那么肯定有int middle 用戶輸入三個數分別是a b c 最后的結果無非是a是中位數 或者b是中位數 或者c是中位數 如果a是中位數則,middle ...
騰訊面試題:10G 個整數,亂序排列,要求找出中位數。內存限制為 2G。 題目和基本思路都來源網上,本人加以整理。 題目:在一個文件中有 10G 個整數,亂序排列,要求找出中位數。內存限制為 2G。只寫出思路即可(內存限制為 2G的意思就是,可以使用2G的空間 ...
題目:在一個文件中有 10G 個整數,亂序排列,要求找出中位數。內存限制為 2G。只寫出思路即可(內存限制為 2G的意思就是,可以使用2G的 空間來運行程序,而不考慮這台機器上的其他軟件的占用內存)。 分析: 既然要找中位數,很簡單就是排序的想法。那么基於字節的桶排序是一個可行 ...
問題描述為: 一個無序的數列,每個數有其對應的權重,權重為非負整數,代表數列中的數字出現的次數。要求找出這一無序數列中的中位數。 1. 直接解法,先對該數列和權重排序。然后找出累計權重為中位數的數字。 時間復雜度為排序的 O(nlog(n)+n) 2. 按照快速排序 ...
什么是最簡單的(希望不是太慢)的方式來計算與MySQL?我AVG(x)尋找,但我有一個很難找到計算現在一個簡單的方法,我返回所有行到PHP,做一個排序,然后拿起中間行,但肯定要有簡單的做它的方式一個MySQL查詢。 示例數據: 對排序val給2 2 3 4 7 8 9,所以應該是 ...