输出前m大的数
描述:给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输 出。
输入:
第一行包含一个整数n,表示数组的大小。n < 100000。第二行包含n个整数,表示数组的元素,整数之间以一个空格分开 。每个整数的绝对值不超过100000000。 第三行包含一个整数m。m < n。
输出:
从大到小输出前m大的数,每个数一行。
思路:快速排序,再输出前m大的数
#include<iostream>
using namespace std;
void swap(int &a,int &b){
int tmp=a;
a=b;
b=tmp;
}
void QuickSort(int a[],int s,int e){
if(s>=e)
return;
int k=a[s];
int i=s,j=e;
while(i!=j){
while(j>i&&a[j]>=k)
--j;
swap(a[i],a[j]);
while(i<j&&a[i]<=k)
++i;
swap(a[i],a[j]);
}
QuickSort(a,s,i-1);
QuickSort(a,i+1,e);
}
int main(){
int n,m;
cin>>n;
cin>>m;
int x;
int a[n];
for(int i=0;i<n;i++){
cin>>x;
a[i]=x;
}
int size=sizeof(a)/sizeof(int);
QuickSort(a,0,size-1);
for(int i=n-1;i>n-m-1;i--)
cout<<a[i]<<",";
cout<<endl;
return 0;
}