把数组按照元素个数由多到少(默认顺序:小->大)排序。
例如数组:[1,2,5,3,2], 排序后,输出[2,2,1,3,5]
#include<stdio.h>
int main()
{
int a[10],b[10];
int count = 0;
while(scanf("%d", &a[count]) != EOF)
{
count++;
}
for(int i=0;i<count;i++)
{
b[i]=a[i];
}
for(int i=0;i<count-1;i++) //冒泡
{
for(int j=0;j<count-1-i;j++)
{
if(b[j]>b[j+1])
{
int t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
}
}
int c[10],d[10],m,n=1;
for(int i=0;i<count;i++)
{
if(b[i]==b[i+1])
{
n++; //重复则个数自增
}
else if(b[i]!=b[i+1])
{
c[m]=b[i]; //存储数组中元素
d[m]=n; //存储该元素个数
m++;
n=1; //不重复个数清零
}
}
for(int i=0;i<m-1;i++)
{
for(int j=0;j<m-1-i;j++)
{
if(d[j]<d[j+1])
{
int t1=d[j];
d[j]=d[j+1];
d[j+1]=t1;
int t2=c[j];
c[j]=c[j+1];
c[j+1]=t2;
}
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<d[i];j++)
{
printf("%d ",c[i]);
}
}
}