求三個整數中的中位數

2022-02-23 15:26:34 字數 477 閱讀 7152

比如三個整數是 10 12 11,輸出11

還是按照從結果出發思考問題

我們用middle變數來存放中位數

那麼肯定有int middle

使用者輸入三個數分別是a b c

最後的結果無非是a是中位數 或者b是中位數 或者c是中位數

如果a是中位數則,middle=a

那麼a是中位數滿足什麼條件呢? 

想不出來沒關係,我們可以舉個例子

a是總位數,要麼是這種情況

8 7 9 要麼是 8 9 7,則一定滿足(8-7)(8-9)小於0

也就是(a-b)*(a-c)<0

其它情況也是同樣的道理,這種思考問題的方法真的挺不錯的。

int main(void)

if ((b-a)*(b-c)<0)

if ((c-a)*(c-b)<0)

printf("%d",middle);

}

求海量個無序整數的中位數

在乙個檔案中有 10g 個整數,亂序排列,要求找出中位數。記憶體限制為 2g。不妨假設10g個整數是64bit的。2g記憶體可以存放256m個64bit整數。我們可以將64bit的整數空間平均分成256m個取值範圍,用2g的記憶體對每個取值範圍內出現整數個數進行統計。這樣遍歷一邊10g整數後,我們便...

40億個32位整數求中位數

40億個32位整數,想找到其中的中位數該怎麼辦?按行讀取檔案,讀取操作不占用記憶體。2 k 應該都能夠熟記,達到反射性反應的程度。位元組數對應計算機中的容量 t,g,m,k 1k 2 10 10 3,一千 1m 2 20 10 6,一百萬 1g 2 30 10 9,十億 int型為有符號32位整數,...

100億個整數,找出中位數

100億個整數,記憶體足夠,如何找到中位數?記憶體不足,如何找到中位數?1 當記憶體足夠時 採用快排,找到第n大的數。隨機選取乙個數,將比它小的元素放在它左邊,比它大的元素放在右邊 如果它恰好在中位數的位置,那麼它就是中位數,直接返回 如果小於它的數超過一半,那麼中位數一定在左半邊,遞迴到左邊處理 ...