论坛首页 Java企业应用论坛

看网友的一道腾讯面试题有感

浏览 9891 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-10-14  
必须是最大堆的~这事大数据处理,因此不能用sort
0 请登录后投票
   发表时间:2011-10-15  
弱爆了!
取Top n小的数则维护一个n size的最大堆,取Top n大的数则维护一个n size的最小堆即可。
0 请登录后投票
   发表时间:2011-10-15   最后修改:2011-10-15
Laosong 写道
必须是最大堆的~这事大数据处理,因此不能用sort

排序的只是result数组的100个数,为啥就不能用sort了?
0 请登录后投票
   发表时间:2011-10-15  
简单说一下自己的算法
最大为M个数据,选出TOP N出来

定义数组 data[M] 存放M个数据,定义 top[N]存放top N数据(TOP建议由链表实现)

将top[N]数组初始化为最小值(数据类型的最小值,不是M数据的最小值)

循环处理data[M]中每一个值,从top[0] 开始比较,若data[m]小于top[n]大于top[n+1]
则在n后插入节点,并将top尾部节点删除;若data[m]小于任何一个top的值,data[m]不处理

0 请登录后投票
   发表时间:2011-10-15  
zczh3 写道
简单说一下自己的算法
最大为M个数据,选出TOP N出来

定义数组 data[M] 存放M个数据,定义 top[N]存放top N数据(TOP建议由链表实现)

将top[N]数组初始化为最小值(数据类型的最小值,不是M数据的最小值)

循环处理data[M]中每一个值,从top[0] 开始比较,若data[m]小于top[n]大于top[n+1]
则在n后插入节点,并将top尾部节点删除;若data[m]小于任何一个top的值,data[m]不处理




若有人嫌弃插入节点需申请资源比较慢,再改进下

用top尾部节即top[N-]点来存放data[m],并将该尾部节点,插入到top[n]之后,原top[n+1]之前
0 请登录后投票
   发表时间:2011-10-15  
挨个看了一遍,没一个是想要的方法。这么基础的东西就没人会么。。。
0 请登录后投票
   发表时间:2011-10-16  
xjtuwgc 写道
挨个看了一遍,没一个是想要的方法。这么基础的东西就没人会么。。。

装X糟雷P的啊。。。
这题有啥不能排序的,1万个数字就大数据量了呗。。。
0 请登录后投票
   发表时间:2011-10-17  
极端情况。。。第一个数安为9 第二个到第一百个都是1。。。。接下来都是1~9以内的数字。。。。楼主你这算法能满足?
0 请登录后投票
   发表时间:2011-10-17  
堆排序啊我觉得是考点
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics