首页 > 代码库 > 使用红黑树查找最小n个数,适合处理大数据
使用红黑树查找最小n个数,适合处理大数据
使用STL容器 multiset
代码:
#include <iostream> #include <vector> #include <set> using namespace std; typedef multiset<int,greater<int> > intSet; typedef multiset<int,greater<int> >::iterator intIter; void findMaxNum(const vector<int> &data,int k){ intSet Max; Max.clear(); if(k < 1 || data.size() < k) return ; vector<int>::const_iterator iter = data.begin(); for(;iter != data.end();++iter){ if(Max.size() < k){ Max.insert(*iter); }else{ intIter least=Max.begin(); if((*iter) < *( Max.begin())){ //只能是begin()删除 Max.erase(least); Max.insert(*iter); } } } for( intIter it = Max.begin(); it != Max.end();it ++){ cout<<*it << " "; } } int main() { vector<int> data; for(int i=0;i<1000;i++){ data.push_back(i); } findMaxNum(data,10); return 0; }
运行结果:
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。