原文:算法题004 寻找最大的K个数

寻找最大的K个数 题目描述 有很多个无序的数,怎么选出其中最大的若干个数 即,从n个数中选出最大的K个数。 解法一 先假设元素的数量不大,例如在几千个左右,在这种情况下,我们就排序吧。 在这里,快速排序或堆排序都是不错的选择,他们的平均时间复杂度都是O nlog n ,然后取出钱K个,O K 。 总的时间复杂度仍然是O nlog n 。 可以注意到,即便是K 的情况,上面的算法复杂度仍然是O nl ...

2013-03-12 00:37 0 6403 推荐指数:

查看详情

O(N)的时间寻找最大K个数

寻找N个数最大K个数,本质上就是寻找最大K个数中最小的那个,也就是第K大的数。 可以使用二分搜索的策略来寻找N个数中的第K大的数。对于一个给定的数p,可以在O(N)的时间复杂度内找出所有不小于p的数。 寻找k大的元素: 如果所有N个数都是正整数,且它们的取值范围不太 ...

Mon Aug 06 18:59:00 CST 2012 4 13700
窥探算法之美妙——寻找数组中最小的K个数&python中巧用最大

原文发表在我的博客主页,转载请注明出处 前言 不论是小算法或者大系统,堆一直是某种场景下程序员比较亲睐的数据结构,而在python中,由于数据结构的极其灵活性,list,tuple, dict在很多情况下可以模拟其他数据结构,Queue库提供了栈和队列,甚至优先队列(和最小堆类似),heapq ...

Mon Feb 22 00:16:00 CST 2016 1 9340
寻找最大K个数,Top K问题的堆实现

寻找最大K个数,如果所有的数据全部可以放入内存,就可以使用random select算法在线性时间内寻找K大的数,再得到最大K个数。 参考:http://www.cnblogs.com/luxiaoxun/archive/2012/08/06/2624799.html 如果不能把 ...

Tue Sep 11 18:09:00 CST 2012 2 7790
分治算法--寻找k大数

  问题描述:给定线性序集中n个元素和一个整数k,1≤k≤n,要求找出这n个元素中第k大的元素,(这里给定的线性集是无序的)。   其实这个问题很简单,直接对线性序列集qsort,再找出第k个即可。但是这样的时间复杂度就是qsort的时间复杂度O(nlogn)。有没有更快的方法呢?看到网上有一种 ...

Tue Jun 18 03:55:00 CST 2013 0 14369
寻找最小的k个数(大顶堆方法)

题目描述:查找最小的k个元素,输入n个整数,输出其中最小的k个。 一般的排序方法,如快排,时间复杂度为O(n*logn+k); 大顶堆方法,时间复杂度为O(k+(n-k)*logk); 如果建立k个元素的最小堆的话,那么其空间复杂度势为O(N),而建立k个元素的最大堆的空间复杂度为O ...

Sun Aug 28 18:39:00 CST 2016 0 2479
算法练习6:寻找数组中的最大算法

请分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新的数组。 提示:你可以用for循环来迭代数组,并通过arr[i]的方式来访问数组的每个元素。 ...

Thu May 03 23:32:00 CST 2018 0 1643
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM