0
已解决
3850 正负数排序
题目描述 Description
现在有n个(10000~ 50000)整数,范围在-1000~1000,
请你设计程序,将这些数据排序后从大到小输出。
输入描述 Input Description
第一行输入一个正整数n(10000~50000)
第二行输入n个空格隔开的整数(-1000~1000)
输出描述 Output Description
输出一行,n个空格隔开的整数。
样例输入 Sample Input
5
-1 2 4 -3 5
样例输出 Sample Output
5 4 2 -1 -3
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
/*
freopen("triangle.in","r",stdin);
freopen("triangle.out","w",stdout);
*/
int n,t,a[50001];
cin>>n;
for(int i=50000;i>=50000-n;i++)
{
cin>>t;
a[t]++; //用桶的下标存这个数,桶的值++
}
for(int i=n;i>=1;i--)
cout<<a[i]<<" ";
/*
fclose(stdin);
fclose(stdout);
*/
return 0;
}
0
已采纳
桶排不能下标是负数,要转成整数,输出时在转回来
:
for(int i=1;i<=n;i++) { cin>>t; t=t+1000; a[t]++; } for(int i=2001;i>=0;i--) { for(int j=1;j<=a[i];j++) { cout<<i-1000<<" "; } }
0
0