面试题:赛马问题
据说,这是Google的面试题。面试题目如下:
一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问,最少得比多少场才能知道跑得最快的5匹马?(不能使用撞大运的算法)
很明显这是一个算法题,网上有很多贴子在讨论这个问题,不过都没有给出一个明确的答案。我想了想,想到下面的一个算法:
1)分成5组A,B,C,D,E,比五场。然后根据每场结果分别给这五组内的五匹马排序(从快到慢)。
2)每组的头名再赛一场,取走第一名,然后该组第二名顶上。
3)重复第二步,直到选出前5名。
这个算法是比较笨的算法,总计需要赛10次,这个算法应该是万无一失的。现在的问题的就,如何优化这个算法,想了想,的确是有优化的空间的。也就是说,是可以少于10次的。
想了一想,上面的那个算法自从第6次开始就使用5个排序数组的头名做“冒泡法”,总是挑一个最优秀的出来,其实,在第6次以后除了挑出最优秀的,我们还可以在每次比赛后淘汰一些速度不行的,淘汰的马匹数自然会比选出的更多,所以,一方面在找,另一方面在淘汰,找出前5名 ...
陈皓(左耳朵耗子)
陈皓(1976年-2023年5月13日),男,MegaEase创始人、资深技术专家、程序员。2023年5月13日,陈皓心梗逝世,享年47岁。(来源:百度百科)
公告
由于酷壳(coolshell.cn)是托管在外网,在国内访问较慢,浏览体验不是很好,且怕后续域名或主机未续费的话,整个博客站点的资源就无法访问了,故爬取了酷壳网的整站的内容,使用 Hexo 重新生成了一个镜像站。
本站所有内容均为酷壳网内容镜像,未对正文内容调整,仅对部分内容正文排版及内容资源文件的URL引用做了调整,所有内容版权归原作者所有。
分类
标签
HTTPS cache J++ CSS3 BT 系统管理 Sort Glassfish bug IDE IE ASP W3C 伪装 STL DIP MapReduce Pylot Thin Provisioning WCat 评论 Bjarne Stroustrup Ruby XML mvcc Issue 9 dygraphs JWT QUIC API设计 vi MongoDB Coding timestamp Eclipse GC Gist Apache 代理 实习生 InI FAQ Kinect Sixth Sense Grinder email brainfuck 验证码 Sun thread Java Fast Recovery Redirections Jon Lech Johansen Bret Victor VB.NET etcd debugfs Hash Subversion Open Source Bitcoin ReCAPTCHA Microsoft Hibernate cas Unicode Oracle C++ Apache JMeter Unicode High Availability wtfjs.com Quora VideoCapture Bash Android CVS Polyglot Division of Labour Demo Spring Justin Frankel Linux Fantom 安全 AES 桌面应用 WinAmp
网站资讯
文章数目 :
740
本站总字数 :
1304.8k
本站访客数 :
本站总访问量 :
最后更新时间 :