最小的k个数--适合处理海量数据
2013-06-18 16:56
162 查看
#include <iostream> #include <set>//multiset所属头文件 using namespace std; #define K 4 void find_number(int a[], int len, multiset<int,greater<int> > &set_number, int k) { set_number.clear(); if(a==NULL || len <=0 || k<=0 || k>len) return; int i; for(i=0;i<len;i++) { if(set_number.size() < k)//堆大小小于k,插入数组值 set_number.insert(a[i]); else { multiset<int,greater<int> >::iterator iter = set_number.begin(); if(a[i]<*iter)//如果堆的堆顶也就是堆的最大值大于当前数组值,则堆顶值舍弃,插入当前数组值,并重新堆内排序 { set_number.erase(iter); set_number.insert(a[i]); } } } } int main() { int a[] = {4,5,1,6,2,7,3,8}; int len = sizeof(a)/sizeof(int); int i; cout<<"数组值为:"<<endl; for(i=0;i<len;i++) cout<<a[i]<<" "; cout<<endl; multiset<int,greater<int> > set_number; //greater<int>代表内置排序从大到小,另外注意> >中间有空格,否则会被编译器认为是>> find_number(a,len,set_number,K); cout<<"最小K个数:"<<endl; multiset<int,greater<int> >::iterator iter = set_number.begin(); for(;iter!=set_number.end();iter++) cout<<*iter<<" "; cout<<endl; return 0; }
相关文章推荐
- 找出一组数中的最小k个数 适合海量数据处理的方法
- 使用红黑树查找最小n个数,适合处理大数据
- 寻找最小的k个数,处理海量数据的思想
- 堆处理海量数据----求前k个最小的数--时间复杂度(n * log k)
- 用堆排序的思想求最小的k个数,处理海量数据
- 教你如何迅速秒杀99%的海量数据处理面试题(转)
- OpenGL ES 宏观处理流程-适合研究一段之后再看
- 十道海量数据处理面试题与十个方法大总结
- [面试] 十七道海量数据处理面试题与Bit-map详解 [未细看]
- 海量数据处理算法—Bloom Filter
- 十道海量数据处理面试题与十个方法大总结
- PLUTO平台是由美林数据技术股份有限公司下属西安交大美林数据挖掘研究中心自主研发的一款基于云计算技术架构的数据挖掘产品,产品设计严格遵循国际数据挖掘标准CRISP-DM(跨行业数据挖掘过程标准),具备完备的数据准备、模型构建、模型评估、模型管理、海量数据处理和高纬数据可视化分析能力。
- [转载]十道海量数据处理面试题与十个方法大总结
- 海量数据处理的各种方法小结
- 海量数据处理算法—Bit-Map
- 海量数据处理面试题集锦
- 从几幅架构图中偷得半点海量数据处理经验
- 海量数据处理专题(七)——数据库索引及优化
- 第二部分、十个海量数据处理方法大总结
- 大数据量,海量数据 处理方法总结