堆分为最小堆和最大堆两种,我们这里只记录下最小堆:

最小堆排序,插入元素

代码实现:

最小堆的堆顶就是最小元素,所以我们可以将堆顶元素出堆。然后对剩下的元素在进行堆排序,然后再将堆顶元素出堆。这样就可以得到一个升序的数组了。

堆顶出堆代码:

到这里使用最小堆来进行排序就告一段落了,接下来就是如何对大量数据的前提下来求top100的问题,我们可以使用一个大小为100的堆来存放数据,基本思路是如果插入元素小于堆顶元素则直接pass;反之则将堆顶元素出堆,然后插入新的元素。

整体文字量偏少,大家可以去看代码里面的注释。


贴一下代码: