从一个长度为n的数组中找出前k个最小值的最优实现

有一道很经典的面试题:如何从一个长度为n的数组中找出前k个最小值/最大值?

对于这道题,其实我之前也没有找到一种最优的、面试官最想听到的解决方案,直到今天在研究Guava的Ordering类源码的时候,才发现Google的牛人已经解决了这个问题,并且给出的算法相当巧妙,复杂度也很低。因为该算法不是我想出来的,我只是把注释和代码简单翻译了一下,所以这篇文章的类别还是归类为翻译比较合适吧!

如果有兴趣,大家可以自己翻看一下Guava中Ordering类的源码,相信会有更多收获!


猜你喜欢

转载自blog.csdn.net/frankingly/article/details/52645179