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

作者: dreamoon (千古悲情人物)   2014-10-15 12:56:06
※ 引述《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(我沒理解錯的話...)
作者: DJWS (...)   2014-10-15 13:33:00
對耶 爆炸了

Links booklink

Contact Us: admin [ a t ] ucptt.com