从10万个数中找10个最大的数

对于这种题目,最普通的想法是先对这10万个数进行排序,而后再选取数组中前10个数,即为最后的答案,排序算法的时间复杂度不下于O(N lgN)。最好的方法是创建一个最小堆。 算法描述: 咱们首先取10万个元素中的前10个元素来创建由10个元素组成的最小堆。这样堆顶元素即是当前已知元素的第10大的数;而后依次读取剩下的99990个元素,若读取的元素比堆顶元素大,则将堆顶元素和当前元素替换,并自堆顶至下
相关文章
相关标签/搜索