[問題] 用最少比較次數找最大、最小等值

作者: lionhome20 (林北大GG)   2016-03-31 18:12:50
各位神人好
想請問在int array[5000]裡
如何用最少的compare次數
找出最大 最小 次大 次小的值
有沒有小於下列5000*4次 compare的找法
(找每一個數都用暴力法)
for(i=0;i<5000;i++)
if(array[i] > Max)
Max = array[i]
感謝
作者: LPH66 (-6.2598534e+18f)   2016-03-31 20:38:00
概念: 一個數沒比過不會知道他是不是最大
作者: springman (司布林)   2016-04-01 03:59:00
同時找最大與最小,有 5000*3/2 次比較的方法。找最大與次大,有 n + log_2 n 次比較的方法。所以看來應該有 5000*3/2 + 2*log_2 5000 次比較的方法找到這四個資料,只是程式寫起來或許比較麻煩。
作者: DJWS (...)   2016-04-01 10:38:00
sorting network 這是超級困難的問題
作者: FRAXIS (喔喔)   2016-04-01 18:46:00
sorting network 的限制應該太強了吧因為 sorting network 不能依照之前比較的結果來選擇下一次要比較的元素
作者: DJWS (...)   2016-04-02 09:38:00
對耶 那麼 樓上說的這種情況 有沒有專有名詞?
作者: FRAXIS (喔喔)   2016-04-02 09:46:00
decision tree?
作者: janice001 (真理)   2016-04-16 11:20:00
都n log n 了 幹嘛不直接quick sort?
作者: j2jx008447   2016-05-02 03:36:00
樓上的方法排序後,索引值頭尾不就是答案了嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com