在系统中,我们经常会遇到这样的需求:将大量(比如几十万.甚至上百万)的对象进行排序,然后只需要取出最Top的前N名作为排行榜的数据,这即是一个TopN算法.常见的解决方案有三种: (1)直接使用List的Sort方法进行处理. (2)使用排序二叉树进行排序,然后取出前N名. (3)使用最大堆排序,然后取出前N名. 第一种方案的性能是最差的,后两种方案性能会好一些,但是还是不能满足我们的需求.最主要的原因在于使用二叉树和最大堆排序时,都是对所有的对象进行排序,而不是将代价花费在我们需要的少数的To…