我想找到5個排序陣列的中位數的解決方案。這是一個面試問題。5個排序陣列的中位數
我能想到的解決方案是合併5個數組,然後找到中位數[O(l + m + n + o + p)]。
我知道,對於2個相同大小的排序數組,我們可以在log(2n)中完成。 [通過比較兩個數組的中位數,然後拋出每個數組的一半並重復該過程]。 ..查找中位數可以是排序數組中的常量時間..所以我認爲這不是log(n)? ..這是什麼時間複雜性?
1] 5陣列是否有類似的解決方案。如果陣列的大小相同,那麼是否有更好的解決方案呢?
2]我認爲,因爲這是要求5,會有一些解決方案的N排序數組?
感謝您的指點。
一些澄清/問題,我問回給面試官:
相同長度的陣列
=>沒有
我想會有在陣列
=>是
作爲一個練習,我認爲2個數組的邏輯沒有擴展。這裏是一個嘗試:
應用上面的2個數組的邏輯來說3個數組: [3,7,9] [4,8,15] [2,3,9] ...中位數7,8,3
投擲元素[3,7,9] [4,8] [3,9] ..中位數7,6,6
投擲元素[3,7] [8] [9] ..中間人5,8 ,9 ...
投擲元素[7] [8] [9] .. median = 8 ...這似乎不正確?
排序元件的合併=> [2,3,4,7,8,9,15] =>預期值= 7
它們每個都單獨排序,還是每個數組也表示一個範圍,其中沒有來自另一個數組的值?即如果有一個值在1-5範圍內,另一個值是否在同一範圍內?如果沒有,那麼你只需要確定數組的排序(從最低到最高的範圍),總和它們的所有長度,然後除以中間元素2,然後轉到包含該元素的數組。 – 2011-05-31 03:03:11
謝謝filip-fku。我解決了你的問題。 – codeObserver 2011-05-31 03:10:26
這是一個臭名昭着的問題,因爲這個想法相對比較簡單,但要正確實施卻非常困難。對於k> 2,實現變得更糟。對我而言,這對於科技採訪來說不是一件好事。 – galactica 2013-07-12 03:11:31