Fw: online algorithm 找中位數

看板Prob_Solve作者 (陳揚和)時間12年前 (2012/08/18 00:20), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/3 (看更多)
※ [本文轉錄自 Programming 看板 #1GBUF2_m ] 作者: sorryChen (陳揚和) 看板: Programming 標題: online algorithm 找中位數 時間: Fri Aug 17 14:25:04 2012 這是個面試問題..但我也不知道解答 給定一個一直會產生的數列..要如何最有效率的找到中位數 如果是要求平均只要constant time 和 space, 中位數就得要所有數都存了 (因為任何過去出現的數都有可能在新產生幾個數列後變成中位數) 如果固定n個數, 需要O(n)的時間和空間可以找到第k大的數(任意k) (selection), 但如果這個數列一直在產生呢? 有沒有data structure 可以在n個數後新加m個數,而能在O(m)找到中位數? O(mlogn)倒是應該可以(不太確定) 若有個blance binary search tree, 並且計有每個子樹下有多少個數, 中位數應該離root不遠, 可能可以在有這樣的數中constant time找到 (對嗎?) 新插入m個數也只要mlogn 實際問題若資料有特殊的分佈也許也可以把數分堆 不知道版上有沒有大師可以指導解惑 -- Life is continuous -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 108.94.138.88

08/17 16:17, , 1F
轉去 Prob_Solve 應較佳。
08/17 16:17, 1F

08/17 16:24, , 2F
補一下,我也不知道正解,但我會用 bucket.
08/17 16:24, 2F

08/17 17:33, , 3F
用兩個heap, 一個max 一個min 就可以達到
08/17 17:33, 3F
※ 發信站: 批踢踢實業坊(ptt.cc) ※ 轉錄者: sorryChen (108.94.138.88), 時間: 08/18/2012 00:20:43
文章代碼(AID): #1GBczTC0 (Prob_Solve)
文章代碼(AID): #1GBczTC0 (Prob_Solve)