从数组中找出最小的K个数 最笨的方法:对原数组进行排序,这样的话其复杂度为o(nlogn) 下面介绍一个o(n+logk n)的方法 ,最后再介绍一个方法,实现对k数组不需要排序,但是需要一个辅助堆栈 新建一个辅助堆栈k,插入数组时,若k数组中的数组,不足k。则直接插入元素。 若k数组中的数目。已经为k,则需要找出数组中的最大值。并与要插入的值x进行比较,若值x大于最大值,则忽略。否则将最大值替换为x。 上述说明的方法,其复杂度为o(n + logK * n)。 使用一个堆,来存放k数组,以尽可能快地进行max运算。
posted on 2011-05-16 11:22 kahn 阅读(273) 评论(0) 编辑 收藏 引用 所属分类: 算法相关
Powered by: C++博客 Copyright © kahn