MDGSF Software Engineer

[算法学习][智力题] 锦标赛排序算法

2018-04-11
Art

问题:

假定有二十五名短跑选手比赛竞争金银铜牌,赛场上有五条赛道,因此一次可以有五个人同时比赛。比赛并不计时,只看相应的名次。假如选手的发挥是稳定的,也就是说如果约翰比张三跑得快,张三比凯利跑得快,那么约翰一定比凯利跑得快。最少需要几组比赛才能决出前三名?

答案见底部
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|/

答案:7次。

分析:

一、 将 25 名选手分为五个组,每组五个人,为了便于说明,我们不妨把这 25 个人根据所在的组进行编号,A1-A5 在 A 组,B1-B5 在 B 组….最后 E1-E5 在最后的 E 组。

然后让每个组分别比赛,排出各组的名次来。不失一般性,我们假设他们的名次就是他们在小组中的编号,即 A 组的名次是 A1、A2、A3、A4、A5,B 组和其它组的名次也是类似(如下图):

A组 B组 C组 D组 E组
A1 B1 C1 D1 E1
A2 B2 C2 D2 E2
A3 B3 C3 D3 E3
A4 B4 C4 D4 E4
A5 B5 C5 D5 E5

二、 让各组的第一名,也就是 A1、B1、C1、D1、E1 再比一次,这样就能决出第一名。不是一般性,我们假设 A1 在这次比赛中获胜,这样我们就知道了第一名。

三、 由于 A1 是第一名,那么第二名和第三名呢?我们假设在第二步中,也就是第 6 组比赛中,名次为 A1、B1、C1、D1、E1 。那么很明显,D1 和 E1 就已经失去了竞争前 3 名的资格了。

四、 第二名的候选人就是比 A1 慢的人,比其他人都快的人,就只能是 A2 和 B1 了。

五、 第三名的候选人就是刚好比第二名慢的人,就只能是 A3、B2、C1 了。

六、 那第二名的候选人和第三名的候选人加起来一共 5 个人,刚好一组比赛。

来源: 吴军老师的得到课程


weixingongzhonghao

Comments

Content