从N个数据中找出最大的K个数据,而且这里有一个限制:内存里存不下所有的N个数据,但是可以存下K个数据。这就让我们打消了用排序的方法来解的念头。
在这里我们使用堆排序来完成。
因为我们只能有K个数据那么大的空间,所以我们建一个K大的堆,将N的前K个数据插入到堆中,然后调整堆。(对于堆结构不了解的可以查看我微博 http://helloleex.blog.51cto.com/10728491/1768758)
对于最大的K个数据,我们要怎么找出来呢。我们首先要确定我们是要用大顶堆还是小顶堆。