查找最小的k 个元素

来源:互联网 发布:ubuntu 用户组权限 编辑:程序博客网 时间:2024/06/13 23:57
题目:输入n个整数,输出其中最小的k 个。

例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。

解决方案:

利用堆;

#include <iostream>#include <algorithm>using namespace std;bool func(int a,int b){return a>b;}void findKNum(int *arr,int n,int k){for(int i = 1;i<=k;i++){      make_heap(arr+i-1,arr+n-1,func);  cout<<arr[i-1]<<endl;}}int main(){int aIn[] = {1,9,3,2,5,4,3,2};findKNum(aIn,8,3);return 0;}


原创粉丝点击