Redian新闻
>
今天面试问题:有一个整数数组,如何find kth smallest element,如果数据是dynamic
avatar
今天面试问题:有一个整数数组,如何find kth smallest element,如果数据是dynamic# JobHunting - 待字闺中
a*e
1
就是说不断有新数据输入,而且数据量很大,分布在多个机器上,(新的data push到
哪个机器上是随机的)。
怎样做效率比较高?谢谢。
avatar
c*t
2
maintain a k size min-heap on each machine. Then merge-sort them to a master
machine.
avatar
j*y
3
每台机器用一个 max queue of size k 保留 k个最小的数
然后再 merge 这些不同机器上的 queque

【在 a**********e 的大作中提到】
: 就是说不断有新数据输入,而且数据量很大,分布在多个机器上,(新的data push到
: 哪个机器上是随机的)。
: 怎样做效率比较高?谢谢。

avatar
P*r
4
max heap of the smallest k numbers?如果有个新数,小于max, delete max,
heapify。

master

【在 c********t 的大作中提到】
: maintain a k size min-heap on each machine. Then merge-sort them to a master
: machine.

avatar
c*t
5
你说得对!

【在 P******r 的大作中提到】
: max heap of the smallest k numbers?如果有个新数,小于max, delete max,
: heapify。
:
: master

avatar
e*s
6
delete max 应该是 replace max with new value吧?

【在 P******r 的大作中提到】
: max heap of the smallest k numbers?如果有个新数,小于max, delete max,
: heapify。
:
: master

avatar
a*e
7
谢谢。
既然涉及master machine,可不可以每次有data进来,(在store在各个机器上的同时
),直接
把data也push一份到master machine上,这样只要在master machine上维持max heap就
可以了。
这样有什么问题呢?

master

【在 c********t 的大作中提到】
: maintain a k size min-heap on each machine. Then merge-sort them to a master
: machine.

avatar
c*t
8
我觉得,选择push还是poll要看requirement,如果这k个数据很常用,时时刻刻都会被
调用,那就push吧,如果只是偶尔查,那就要用的时候再从各个机器上poll.无论哪种
,都要在每台机器上存这个heap,否则传输出什么问题怎么办?

【在 a**********e 的大作中提到】
: 谢谢。
: 既然涉及master machine,可不可以每次有data进来,(在store在各个机器上的同时
: ),直接
: 把data也push一份到master machine上,这样只要在master machine上维持max heap就
: 可以了。
: 这样有什么问题呢?
:
: master

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。