top k

假如这里要从海量数据中找到前k大的数据。

那么就用一个元素数目为k的小顶堆,这样的话,堆顶的元素就是这k个数中最小的,只有这个可能不是top k大的元素。

新来一个元素就和堆顶比较,如果比它小那么肯定不是top k的元素,就扔掉,如果比它大,那么此时的堆顶就肯定不是top k中的元素,二者交换,然后重新保存堆序。

当所有的数据都遍历完那么top k的元素就选取出来了。

猜你喜欢

转载自www.cnblogs.com/hustdc/p/8910159.html