寻找最小的K个数

时间:2017-06-14 20:41:24   收藏:0   阅读:249

寻找最小的K个数

题目描述:查找最小的K个数

题目:输入n个整数,输出其中最小的K个数

例如,输入1、2、3、4、5、6、7、8这8个数字,则最小的4个数字为1、2、3、4。

 

第一节、各种思路,各种选择

 

    这个时候,想到了选择或交换排序,即遍历n个数,先把最先遍历到的K个数存入大小为k的数组之中,对这k个数,利用选择或交换排序,找到k个数中的最大数Kmax(Kmax为这K个元素的数组中最大的元素),用时间为O(k)(你应该知道,插入或选择排序查找操作需要O(k)的时间),后再继续遍历后n-k个数,x与Kmax比较:如果x< Kmax,则x代替Kmax,并再次重新找出K个元素的数组中的最大元素Kmax‘;如果x>Kmax,则不更新数组。这样每次更新和不更新数组所用的时间为O(k)或O(0),整趟下来,总的时间复杂度平均下来为:n*O(k) = O(n*k);——方法二

 

    
    上面的这些思路来自:http://blog.csdn.net/v_JULY_v 
   非常感谢作者,提高了这么多思路。

原文:http://www.cnblogs.com/wft1990/p/7010817.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!