问题描述:涛涛最近负责图书馆的管理工作,他会记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号表示。给出读者的来访记录,统计出每位读者到访次数并按照从高到低的顺序排序。
输入说明:输入的第一行包含一个整数n(1<=n<=1000),表示涛涛的记录条数。第二行包含n个整数,依次表示涛涛的记录中每位读者的编号,读者的编号为不超过1000的正整数,整数之间用空格分隔。
输出说明:输出一行,从高到低顺序输出各个读者到访次数,各个数据之间用空格分隔。
输入样例:
5
1 2 1 1 3
输出样例:
3 1 1
#include<stdio.h>
int main()
{
int n;
scanf ("%d",&n);
int a[10000],i;
for (i=0;i<n;i++)
{
scanf ("%d", &a[i]);
}
int sum[1000]={};
for (int j=1;j<=1000;j++)//计数
{
for (i=0;i<n;i++)
{
if (j==a[i])
{
sum[j-1]++;
}
}
}
int count=0,k,l,temp;
for (i=0;sum[i]!=0;i++)//计算非零sum[]个数
{
count++;
}
for (k=0;k<count-1;k++)//排序
{
for(l=0;l<count-k-1;l++)
{
if (sum[l+1]>sum[l])
{
temp=sum[l];
sum[l]=sum[l+1];
sum[l+1]=temp;
}
}
}
for (i=0;i<count;i++)
{
printf ("%d ", sum[i]);
}
return 0;
}