校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 算法 > 大数据相关算法
题目

一个分布式系统的海量数据分布在100台服务器中,怎么统计出这些数据的TOP10

解答

思路:

先对每台服务器的数据求得各自的TOP10,然后把100*10= 1000个数据求得TOP10即可。

对每台服务器,按例一的方法切分成小文件。

内存里分配一个TOP的整数空间,用于记录TOP10的数据,为方便计算,需要使这个空间从大到小有序排列。

读取小文件的数据,如果比整数空间的最后一个数据大的话,则代替最后一位,并从后往前比较移动,使剩下的数据有序。

得到每个文件的TOP10数据后,记录到文件中。

把100台的TOP10数据汇总到一台服务器中,依然使用分配有序空间的方法,就能得到TOP10的数据了。

可以发现,这个有序空间也可以用堆排序来实现。

C 0条回复 评论

帖子还没人回复快来抢沙发