1. 程式人生 > 其它 >淺談排序演算法-25匹馬賽跑

淺談排序演算法-25匹馬賽跑

問題:25匹馬,五個賽道,每個賽道最多允許一匹馬進行比賽,問需要進行多少次比賽可以找出跑得最快的三匹馬?

拓展說下問題,一共是五個賽道,每個賽道上佔一匹馬,一場比賽最多就是五匹馬同時進行.然後跑出各自的時間,A1 A2 A3 A4 A5;

如果再進行下一輪比賽,就是B1 B2 B3 B4 B5...

第一場比賽可以找出跑的第一快的馬,

第二場比賽可以找出跑的本組中第一快的馬

第三場.....

最後得到五組比賽,組內第一的馬;

然後再讓這五匹馬進行一場比賽,最後勝者就是25匹馬中跑的第一快的.

因為最後是找出跑的最快的3匹馬,所以五組中最後的兩匹馬都可以不考慮了,此時參賽馬數(25-1-10=14)

此時超級組中還有4匹馬是全場最快,然後A組中還有未知的4匹馬有可能跑的比B組第一還快的存在;

但是這時候可以淘汰掉D E組的6匹,此時參賽馬數(14-6=8)

進行第六次比賽,此時我們拿跑的最慢的五匹馬進行比賽,取前兩名就夠了;

這樣會淘汰三匹馬,此時參賽馬數(8-3=5)

最後這5匹馬是爭奪第二名和第三名的,跑一次 找出第二塊的馬,(比賽次數5+1=6);

再在剩下的4匹馬中,再進行一次比賽,(比賽次數5+1+1=7),找到第三快的馬;

自此,前三快馬找到,遊戲結束.

不要為了追逐,而忘記當初的樣子。