首页 > 试题广场 >

公司里面有1001个员工,现在要在公司里面找到最好的羽毛球选

[单选题]
公司里面有1001个员工,现在要在公司里面找到最好的羽毛球选手,也就是第一名,每个人都必须参赛,问至少要比赛多少次才能够找到最好的羽毛球员工。
  • 1001
  • 1000
  • 500
  • 501
推荐
xxj头像 xxj
两两组合,多余的在单出后加入
1:分成500组,1人空出(500次,淘汰500人)
2:250组,空1人(250次,淘汰250人)
3:125组,空1人(125次,淘汰125人)
4:63组         (63次,淘汰63人)
5:31组,空1人  (31次)
6:16组          (16次)
7:8组           (8次)
8:4组           (4次)
9:2组            (2次)
10:1组            (1次,得出冠军)

结果:
如果是两两比赛次数是:500+250+125+63+31+16+8+4+2+1 = 1000次
如果是场次次数是:10场比赛
编辑于 2014-11-28 16:29:10 回复(12)
相当于冒泡法排序第一趟找出最大值,比较n-1次

发表于 2015-07-30 17:23:38 回复(20)
理解错了,是总共需要比赛多少次,不是经过多少轮比赛。
发表于 2016-10-29 09:24:16 回复(0)
先在1001名员工中抽签抽出23名员工,首轮轮空,其余978名员工分489组进行淘汰赛,需进行489场比赛;
获胜的489名员工和首轮轮空的23名员工共512名员工分成256组进行淘汰赛,需进行256场比赛;
获胜的256名员工分成128组进行淘汰赛,需进行128场比赛;
获胜的128名员工分成64组进行淘汰赛,需进行64场比赛;
获胜的64名员工分成32组进行淘汰赛,需进行32场比赛;
获胜的32名员工分成16组进行淘汰赛,需进行16场比赛;
获得的16名员工分成8组进行淘汰赛,需进行8场比赛;
获胜的8名员工分成4组进行淘汰赛,需进行4场比赛;
获胜的4名员工分成2组进行淘汰赛,需进行2场比赛;
获胜的2名员工进行淘汰赛,需进行1场比赛。
 
共需进行:489+256+128+64+32+16+8+4+2+1=1000场比赛
发表于 2014-11-26 11:11:49 回复(0)
不考虑打赢,考虑1001人中要得出冠军,那么需要淘汰掉1000个人,而每次比赛只能淘汰一次,所以,淘汰1000人需要比赛1000次
发表于 2015-08-22 08:37:48 回复(7)
这道题其实就是一种二叉树结构,1001个员工为叶节点,而比赛次数则是求非叶节点
发表于 2015-09-10 15:44:25 回复(6)
就1000次,相当于打擂台模式,取第1号当擂主,2号至1001依次挑战擂主,赢得当擂主,输的下台
发表于 2014-12-04 18:29:47 回复(4)
一场比赛淘汰一人,需要比赛1000场
编辑于 2014-11-28 16:29:10 回复(0)
答案:B
因为只能进行两两比赛,所以其实质为二叉树。
1001个叶结点的二叉树不管如何安排必然有1000个内部结点。
而每个内部结点代表着一场比赛的结果。
所以答案为B
发表于 2015-03-23 11:19:47 回复(1)
寻找第一大的数,其实就是建堆的过程,需要比较(n-1)次,时间复杂度为O(n)
寻找第二大的数,其实就是调整堆的过程,需要比较(logn-1)次,时间复杂度为O(logn)
发表于 2016-09-16 17:48:48 回复(0)
这一题相当于完全二叉树的模型,1001人表示1001个叶子节点,在该二叉树中非叶子节点的个数就是需要比赛的次数,而非叶子节点是叶子节点-1,所以比赛次数 = 1001 - 1 = 1000,然而我在模拟的时候把总节点数算为1001了,结果掉坑里了。
发表于 2015-08-22 10:10:22 回复(0)
一个人去挑战所有人,赢的人继续往下挑战,所以是1000场
发表于 2014-11-09 11:56:49 回复(0)
邪头像
两两比赛,分成500组剩下一人,类似于归并排序的方式,比出冠军后,让冠军之间再比,主要是要想想多余的那一个选手如何处理,必然要在第一次决出冠军后加入比赛组。
发表于 2014-10-25 00:26:07 回复(0)
我的做法是自己算一下10个人里面要淘汰几次,9个人里面要淘汰几次来查找规律的
规律就是要进行(总人数-1)次的比赛
发表于 2020-02-09 11:58:28 回复(0)
答案:本题中,可以采用两两比赛的方式找出最好的羽毛球员工,具体而言,就是将1001个员工两两分组,分成500组,然后剩下一个人,采用二者之间取高手的方法,即类似于归并排序的方式,比出冠军后,让冠军之间再比,主要是要想想多余的那一个选手如何处理,必然要在第一次决出冠军后加入比赛组。

过程如下:

(1)分成500组,1人空出(500次,淘汰500人)

(2)250组,空1人(250次,淘汰250人)

(3)125组,空1人(125次,淘汰125人)

(4)63组  (63次,淘汰63人)

(5)31组,空1人 (31次)

(6)16组 (16次)

(7)8组  (8次)

(8)4组(4次)

(9)2组 (2次)

(10)1组 (1次,得出冠军)

结果:

如果是两两比赛,次数是:500+250+125+63+31+16+8+4+2+1 = 1000次。

如果是场次,次数是:10场比赛。

如果只求两两比赛的次数,可以用另外一个简单的方法来考虑:每一场比赛只能淘汰一个人,只有比1000场比赛才能淘汰掉1000个人,从而剩余最后一个,一定是第一名。

发表于 2018-07-16 14:25:45 回复(0)
一个人挑战剩下的一千人,且每次都挑战成功,他就是第一名
发表于 2022-03-21 16:24:37 回复(0)
感觉更像脑筋急转弯,最少嘛,你随便找一个出来分别和剩下的1000人比赛一场,都赢了就是第一名,不就是1000场吗
发表于 2019-05-23 14:11:21 回复(0)
这道题没有必要分很多组,可以简单的想一下,实力第一的人肯定要比其余1000人强,也即是他分别与这1000人都打过一场比赛。
或者,理解为比赛只在两个人之间进行,赢得继续比赛,输的淘汰。
发表于 2016-08-30 17:27:46 回复(0)
建堆比较n-1次得到冠军
发表于 2015-08-25 15:19:35 回复(0)
答:1000次
每次比赛淘汰一人,1001个人要淘汰1000个,所以要1000次比赛。
编辑于 2015-06-20 12:29:06 回复(0)
相当于是1001个乱序的数中求最大值,要比较多少次
发表于 2021-11-30 17:38:15 回复(0)