Re: [問題] 給定n個排好序的整數陣列 找中位數

看板Prob_Solve (計算數學 Problem Solving)作者 (大笨蛋小月唷!)時間10年前 (2014/10/15 12:56), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串5/8 (看更多)
※ 引述《DJWS (...)》之銘言: : 依序掃描n個中位數 O(n) : 比x小(大)的中位數 : 其所對應的陣列,預計刪除小(大)的那一半 : 也就是 low = (low + high) / 2 + 1; O(1) : (或者 high = (low + high) / 2 - 1;) : 預計更新陣列大小為 size = high - low + 1 O(1) : 累計欲刪除的元素數量 y (小的那些) O(1) : 如果第k個元素小於等於 y,那麼就刪除最大的那 1/4,下個回合找第 k 小的元素 : 否則就刪除最小的那 1/4,下個回合找第 k = Σsize - y 大的元素 對於這裡我有點困惑 若k<=y,刪除叫大的那些數是沒問題的,因為那些數一定比第k個數還大 但是當k>y時,真的能刪除較小的那一部分嘛? 例如說現在有7*7的矩陣 1, 2, 3, 4, 5, 6, 7 8, 9,10,11,12,13,14 15,16,17,18,19,20,21 22,23,24,25,26,27,28 29,30,31,32,33,34,35 36,37,38,39,40,41,42 43,44,45,46,47,48,49 並且我要找的數是第17小的數 但比較小的那部分卻只有16個數 於是按照這個演算法我們就會把真正的第17小的數給移除了0.0(我沒理解錯的話...) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.28.238 ※ 文章網址: http://www.ptt.cc/bbs/Prob_Solve/M.1413348969.A.3EC.html

10/15 13:33, , 1F
對耶 爆炸了
10/15 13:33, 1F
文章代碼(AID): #1KFVvfFi (Prob_Solve)
討論串 (同標題文章)
文章代碼(AID): #1KFVvfFi (Prob_Solve)