64匹馬8個跑道分多少次可以排出速度快的前四匹


  • 如果計時的話,場數最少,即分八組,跑一輪按時間成績來排那么就是八場
  • 如果不計時且排名沒有並列,
  • 假設,有一棵未排序的樹T,其根節點下有64個葉子節點其deep為2,現在每次可取8個節點進行排序
  • 第一步:左從往右取下8個葉子節點排序,那么排完后該八個節點組成按從大到小一顆八層的子樹,掛到根節點最左邊位置,因為剩下的葉子節點和該子樹為排序,所以是並列的關系
  • 第二步:繼續從左往右取下8個節點,此時取下的是左1節點的為根節點的子樹A和7個葉子節點,參與排序的為A樹的根節點,排序后,可按此排序的最大節點為根節點的新的子樹B,子樹A根據其根節點A在B中的位置合並到子樹B上。,然后樹B掛回根節點左1位置,
  • 重復步驟,直到樹T的第一層的節點數為1,那么繼續在樹的第二層執行以上重復步驟,直達樹T的1,2,3,4層節點數都為1,那么則選出了速度前4的四匹馬。

  • 由此可看出:當每次生成的子樹的0,1,2,3,層都只有一個節點時,那么只要迭代完樹T的第一層,即可得出結果,表現在賽場上的是上一輪的第一名在下一次排名前四名以外。然后可算出場數為,(64-8)/7 +1 = 9
  • 排出前四的最慢情況為:每次生成的子樹的層數最少,導致重復的層數會增多。即比賽的場次增多。表現在賽場上的是上一輪的第一名在下一次排名中也是排名第一,然后可算出常數為:
      • 樹T第一層 9場
      • 樹T第二層,9個元素,最少要兩場,第一場生成的子樹只有一種。應為所有的子樹都是相同的。此時共有 10場
        •  比完第一層,樹T的第二層只有兩個節點,那么可以選樹T的第三層 3個節點,還是不夠,第四層 4個節點。2 + 3+3 =8個節點。此時共11場
        •  那么則完成了 樹的2,3層
        •    按最壞的情況,此時第四層還有,3個節點,再比一次,則決出第四層,此時共12場
  • 按上述步驟:可得出64匹馬的每匹馬的排序。最快為每棵子樹的層最大,即每次的上一次第一名,是下一次的最后一名,共9場
      •     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM