看板 Prob_Solve 關於我們 聯絡資訊
FRAXIS 這是你的文章嗎? http://algnotes.wordpress.com/2014/10/09/ 看完這個我就想通了 行列已排序的陣列,可以用階梯狀移動的方法找rank(做partition),O(n) 只有行排序的陣列,可以用 n 次 binary search 找 rank (做partition),O(n log n) n個陣列長度不斷改變,MoM無法保證partition出來的兩堆,都是至少1/4、至多3/4, 但是MoM可以保證比MoM小的那堆至少是左上那塊,至多是左上+右上+左下那三塊 大 右下 右下+左下+右上 可以刪掉右下(保留比MoM小的那堆)或者左上(保留比MoM大的那堆) 注意到上、下通常不一樣多,但是左上右上一樣多,左下右下一樣多(因為中位數) 換句話說,每回合至少都會刪掉「中位數較小(or大)的那些陣列的一半」 簡單來說,每回合有一半的陣列至少刪掉一半 所以是 O(log n) 回合沒錯 行列已排序是 O(n logn) 只有行排序是 O(n logn logn) 最後我還是想問,學術界有人做過這個題目嗎? 還是說文章中的 reference paper 就是這個方法? 我想整理到演算法筆記上面 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.85.94 ※ 文章網址: http://www.ptt.cc/bbs/Prob_Solve/M.1413525422.A.8BD.html
chz: 刪除的至少是"一半的行的一半",第1回是1/4,其他回不知。 10/17 14:06
chz: 只知道次數一定被O(log n) bound住。 10/17 14:07
※ 編輯: DJWS (111.250.85.94), 10/17/2014 14:22:46
DJWS: 我補了比較詳細的bound方式 10/17 14:23
※ 編輯: DJWS (111.250.85.94), 10/17/2014 14:27:41 ※ 編輯: DJWS (111.250.85.94), 10/17/2014 14:31:32
FRAXIS: Reference裡面的是O(n)的方法 10/17 19:35