从这道题学到了排序的一种新方法,当数据量非常大的时候就可以用哈希表这种方法来进行排序,类似于桶排序利用下标;这种排序方法时间复杂度是O(n);
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 1000010
int Hash[N];
int main()
{
int i,m,n,t;
while(~scanf("%d%d",&n,&m))
{
memset(Hash,0,sizeof(Hash));
for(i=0; i<n; i++)
{
scanf("%d",&t);
Hash[t+500000]++;
}
for(i=N; i>=0&&m>0; i--)
{
if(Hash[i])
{
printf("%d%c",i-500000,m==1?'\n':' ');
m--;
}
}
}
return 0;
}