心胸决定格局,眼界决定境界...

关于堆排序

https://www.cnblogs.com/linjj/p/5260763.html

堆的其他应用:

1.求一个数列中的第K大的数

建立一个大小为K的最小堆,堆顶就是第K大的数

例如,假设有10个数,要求求第3大的数,第一步选取任意的3个数,比如说是前3个,将这3个数建成最小堆,然后从第4个数开始,与堆顶
的数比较,如果比堆顶的数要小,那么这个数就不要,如果比堆顶的数大,则舍弃当前的堆顶而将这个数作为新的堆顶,并再去维护堆

2.求出一个数列中前k个最大的数据

用一个大小为k的数组,里面塞入数据,后面的数据只要比这个数组的任何一个元素大,则替换掉,遍历完毕即可。

posted @ 2019-01-28 16:30  WELEN  阅读(85)  评论(0)    收藏  举报