[问题] 用最少比较次数找最大、最小等值

楼主: 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