一个列表中有1亿个数据,需要取出其中最大的前100个数据,如何尽可能的降低时间复杂度?
最容易想到的方法是先对这1亿个数据排序,然后取出最大的100个数据,这样的话时间复杂度就是O(nlogn),显然方法不合适。
可以考虑的方法如下:
1.把这个列表截取成1000个子列表;
2.然后分别找出这1000个子列表中的最大的100个数据;
3.把这1000个子列表中的100个数据全部放到一个新的列表中,再重新排序,找到最大的100个数据。
一个列表中有1亿个数据,需要取出其中最大的前100个数据,如何尽可能的降低时间复杂度?
最容易想到的方法是先对这1亿个数据排序,然后取出最大的100个数据,这样的话时间复杂度就是O(nlogn),显然方法不合适。
可以考虑的方法如下:
1.把这个列表截取成1000个子列表;
2.然后分别找出这1000个子列表中的最大的100个数据;
3.把这1000个子列表中的100个数据全部放到一个新的列表中,再重新排序,找到最大的100个数据。