各位神人好
想請問在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概念: 一個數沒比過不會知道他是不是最大
同時找最大與最小,有 5000*3/2 次比較的方法。找最大與次大,有 n + log_2 n 次比較的方法。所以看來應該有 5000*3/2 + 2*log_2 5000 次比較的方法找到這四個資料,只是程式寫起來或許比較麻煩。
作者:
DJWS (...)
2016-04-01 10:38:00sorting network 這是超級困難的問題
作者:
FRAXIS (喔喔)
2016-04-01 18:46:00sorting network 的限制應該太強了吧因為 sorting network 不能依照之前比較的結果來選擇下一次要比較的元素
作者:
DJWS (...)
2016-04-02 09:38:00對耶 那麼 樓上說的這種情況 有沒有專有名詞?
作者:
FRAXIS (喔喔)
2016-04-02 09:46:00decision tree?
都n log n 了 幹嘛不直接quick sort?
作者: j2jx008447 2016-05-02 03:36:00
樓上的方法排序後,索引值頭尾不就是答案了嗎