TopK 算法的解释与应用
前言
什么是 TopK 算法?简单来说就是在一堆数据里面找到前 K 大(当然也可以是前 K 小)的数。
这个问题也是十分经典的算法问题,不论是面试中还是实际开发中,都非常典型。面对这种问题,你知道怎么解决吗?
最经典的方法之堆
面对 Top K 问题,最经典的解法是利用堆。(堆是数据结构里的知识,学习算法的一个重要前提需要了解常用的数据结构,既然大胆点开了算法文章,这里默认大家对前提知识已经了解,在此就不多做介绍,不懂请自行搜索,后期有时间我再写相关文章。)
这里简单给大家介绍一下堆,以防陷入知识盲区的旁友。
堆(数据结构):堆可以被看成是一棵树【树就不用多说了吧,对,就是你家门外的那棵树 (手动滑稽)】
最大堆(也叫大根堆、大顶堆):根结点的键值是所有堆结点键值中最大者,且每个结点的值都比其孩子的值大。
最小堆(也叫小根堆、小顶堆):根结点的键值是所有堆结点键值中最小者,且每个结点的值都比其孩子的值小。
点击阅读更多看全文。