今天看到一篇赖永浩大牛的博客,由一道笔试题目谈算法优化。http://blog.csdn.net/lanphaday/archive/2008/12/19/3547776.aspx。
题目原题是从10亿个浮点数中找出最大的一万个,赖的文章主要是讲如何去优化算法,并不是侧重在这道题目,所以对其进行了简化。
题目:从1亿个整数中找出最大的一万个。
赖永浩的解法:
基本思想是维持一个数组记录当前最大的一万个数,每来一个新数将其与数组中最小的数比较、替换。该数组初始先排序,第一次交换后数组就分成了两部分,后面9999个有序,最小的是1号元素