问题描述
求一维数组中最小的K个数。
方法一:排序
先把数组从小到大排序,取前K个数。时间复杂度为O(nlogn)。如果数组过大,机器内存无法同时容纳整个数组,则需要使用外部排序。
以下程序使用的是标准库algorithm中的排序方法----std::sort,代码如下:
//排序法,算法复杂度O(nlogn)
void GetTopK_Sort( int nArray[], in...
分类:
编程语言 时间:
2015-06-30 16:26:59
阅读次数:
165
思想比较简单,就是每个通过map来获取当前的数据块中的的topk个数据,然后将他们以相同的key值放到reduce中,最后通过reduce来对这n*k个数据排序并获得topk个数据。具体的就是建立一个k个大小的数组,一开始初始化为都是100(假定这里的100是最大的数),然后往里面插数据小的数据即可...
分类:
其他好文 时间:
2015-06-01 11:26:02
阅读次数:
197
1.Spark1.0.0 应用程序部署工具spark-submit2.Spark Streaming的编程模型3.使用java api操作HDFS文件4.用SBT编译Spark的WordCount程序5.在Spark上运行TopK程序6.在Spark上运行WordCount程序7.Spark一个简单...
分类:
其他好文 时间:
2015-05-28 21:21:46
阅读次数:
198
由于开始学习MapReduce编程已经有一段时间了,作为一个从编程中寻找自信和乐趣以及热爱编程的孩子来讲,手开始变得很“痒”了,很想小试一下身手。于是自己编写了TopK的代码。TopK的意思就是从原文件中找出词频排名前K的所有单词。首先分析该问题,从中我们可以得到启发:要想知道词频排名前K的所有.....
分类:
其他好文 时间:
2015-05-06 21:11:58
阅读次数:
123
需要先统计词频,再进行排序----------词频统计---------package TopK;import java.io.IOException;import java.util.StringTokenizer; import org.apache.hadoop.conf.Configurat...
分类:
其他好文 时间:
2015-05-05 19:00:55
阅读次数:
248
1 使用从大到小的优先队列保存最小的K个数,每次取出K个数之后的其余数和堆顶元素比较,如果比堆顶元素小,则将堆顶元素删除,将该元素插入void topK(int arr[],int n,int k){ if(k>n) return; priority_queue q; ...
分类:
其他好文 时间:
2015-04-28 11:18:43
阅读次数:
115
利用快速排序实现TopK排序 1 //返回支点的下标 2 int partition(int *arr, int low, int high) 3 { 4 //选取第一个元素为支点 5 int pivot = arr[low]; 6 while(low = pivot)10 ...
分类:
编程语言 时间:
2015-04-13 22:35:52
阅读次数:
182
#include #include using namespace std;const int max_len = 10;char a[max_len];void topK(int n, int m, int& k, int i){ if (k = m) return; f...
分类:
编程语言 时间:
2015-01-24 01:35:02
阅读次数:
188
Hadoop1.x中MapReduce中TopK算法(Top100算法)...
分类:
编程语言 时间:
2014-12-11 22:25:32
阅读次数:
245