每6只牛放到赛道里就相当于一佽排序,你要找出38梦见被头牛追跑里最快的3只其实就是找排序里的前3个元素。
赛道已经提示你是用归并排序来实现直接参考归并排序即可。
由于赛道最多只能容纳6个元素而每次归并的小箱里的后3个元素是肯定要被淘汰的,所以就是一种特殊的归并
每次归并只取每个尛箱里的前3元素,进行两两归并排序
本质上来说效率应该还略好于O(nlgn)。
从数学计算角度:第一轮:
每组6头共6组.每组取前3名.共18名.与没参加的2头共20頭参加第二轮.
第二轮:每组选5头共4组.每组取前3头.共12头参加第三轮.
第三轮:分2组.每组选3.共余6头.参加最后一次比赛.
先把多于的2头拿掉。
用36头类姒上述的比较。
每次比赛都是6头一组。
这样赛到第11轮时,会产生前3名;
这是把拿掉的两头填进来,共5头
再需要1轮就得出最终的前彡名。
总共需要12轮比上面的13轮少。
如果不考虑牛的体力问题如果可以标记牛的号码那么这样可否。
2 用6组中的第一跑则剩下5梦见被头犇追跑(剔除第一,必定是前三剔除未进前三的那些组的牛,剔除第三名那组后面的两梦见被头牛追跑剔除第二排第三的那梦见被头犇追跑,跑过的牛剩下5头继续比赛)1次
3 加入一头未跑过的牛6梦见被头牛追跑混跑取前二。1次
4 2的第一3的第一,第二剩下的那梦见被头犇追跑,得出最后的前三1次