首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

两道算法面试题,该如何处理

2012-03-22 
两道算法面试题1、有81个选手,9个赛道,要求选出前4名。需要多少场?2、有N(很大)个数,从里面选出第K(很小)大的

两道算法面试题
1、有81个选手,9个赛道,要求选出前4名。需要多少场?

2、有N(很大)个数,从里面选出第K(很小)大的数,要求时间复杂度尽可能的小。

[解决办法]
第一题:11场够了
第二题:用nth-element,是O(n)的
[解决办法]
第二题:随机快排,判断,扔掉一边,对另一边操作,这题算法导论上有,编程这美上有,也有很多网上有,自己查一下就是了,时间复杂度O(n),选用随机算法也要花费一定的代价,可以取第一个,中间一个,最后一个取中位数作为判断依据,具体我也忘了,也可以五五划分一组,再五个划一组,见算法导论。。。
[解决办法]
我的答案是是16
81/9 = 9次
每次取前4名,保证了(如果一次就把最快的4个人包括)的情况
4*9/9 = 4次
再取前四名
4*4/9 = 2次
再取前四名
4*2/9=1次
count = 9+4+2+1 = 16;

11次的?请高手说明白点,让我学习一下

热点排行