思路;
利用一个长度为k的数组,
遍历要查询的数组,如果辅助数组的长度小于k ,则直接添加到辅助数组
否则则跳过
c++实现如下
void findkmax(int* arr,int len,int k){ if(arr == NULL || len < k || len <= 0 ){ return; } multiset<int> set; for (int j = 0; j < len; ++j) { if(set.size() < k){ set.insert(arr[j]); } else{ multiset<int,greater<int>>::iterator it = set.begin(); int first = *it; if(first < arr[j]){ set.erase(it); set.insert(arr[j]); } } } for (multiset<int,greater<int>>::iterator it = set.begin(); it != set.end() ; ++it) { cout<<*it<<" "; } cout<<endl; }
原文:https://www.cnblogs.com/dongma/p/13924100.html