锁定老帖子 主题:看网友的一道腾讯面试题有感
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-14
必须是最大堆的~这事大数据处理,因此不能用sort
|
|
返回顶楼 | |
发表时间:2011-10-15
弱爆了!
取Top n小的数则维护一个n size的最大堆,取Top n大的数则维护一个n size的最小堆即可。 |
|
返回顶楼 | |
发表时间:2011-10-15
最后修改:2011-10-15
Laosong 写道 必须是最大堆的~这事大数据处理,因此不能用sort
排序的只是result数组的100个数,为啥就不能用sort了? |
|
返回顶楼 | |
发表时间: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]不处理 |
|
返回顶楼 | |
发表时间: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]之前 |
|
返回顶楼 | |
发表时间:2011-10-15
挨个看了一遍,没一个是想要的方法。这么基础的东西就没人会么。。。
|
|
返回顶楼 | |
发表时间:2011-10-16
xjtuwgc 写道 挨个看了一遍,没一个是想要的方法。这么基础的东西就没人会么。。。
装X糟雷P的啊。。。 这题有啥不能排序的,1万个数字就大数据量了呗。。。 |
|
返回顶楼 | |
发表时间:2011-10-17
极端情况。。。第一个数安为9 第二个到第一百个都是1。。。。接下来都是1~9以内的数字。。。。楼主你这算法能满足?
|
|
返回顶楼 | |
发表时间:2011-10-17
堆排序啊我觉得是考点
|
|
返回顶楼 | |