怎样在N个已完成排序的集合中选出m个最大数算法的代价是多少

有序的话二分这个时间,然后在N个好友中用二分找到这个时间,可知有多少在信息在此时间之前,多少在此之后。直到找到在此之后的数量为m。总的复杂度为O(n * log(ti) * log(k)),k为时间跨度。这样不用建堆,编程也简单,m比较大时效率还高,因为该算法的效率同m无关。
■网友
给数组的引用或者下标按照每个数组的未选出消息时间排序,然后选出一条最新消息,然后继续排序(有序队列中插入一条,堆,二分都可),选出下一条。logn*m


    推荐阅读