首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

百度2013校招例题

2013-10-08 
百度2013校招题解程序设计题:3:有20个数组,每个数组有500个元素,并且是有序排列好的,现在在这20*500个数中

百度2013校招题解

程序设计题:

3:有20个数组,每个数组有500个元素,并且是有序排列好的,现在在这20*500个数中找出排名前500的数

思路:可以先选出20个数组中最大的数,进行比较,选出其中最大的数,然后再从选出最大的那个数组中选出数放入20个数中比较,每次都重复步骤,直到最终选出500个数,这个复杂度是多少呢?

20个数的比较可以用堆,插入一个数lgn,故总的复杂度是500lg20

用这个思路写出代码如下:

此时根据上面的思路,我们可以对20段区间进行排序,然后从最大区间中开始找数,然后在找出最大的那些数后,将这些数删除,重新将排除大数的数的区间进行排序,然后重复以上步骤,直到找到500个数。


热点排行