本文主要是介绍海量数据取top K问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一个列表中有1亿个数据,需要取出其中最大的前100个数据,如何尽可能的降低时间复杂度?
最容易想到的方法是先对这1亿个数据排序,然后取出最大的100个数据,这样的话时间复杂度就是O(nlogn),显然方法不合适。
可以考虑的方法如下:
1.把这个列表截取成1000个子列表;
2.然后分别找出这1000个子列表中的最大的100个数据;
3.把这1000个子列表中的100个数据全部放到一个新的列表中,再重新排序,找到最大的100个数据。
这篇关于海量数据取top K问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!