程序一:
#include <stdio.h>
#include <string.h>
#define M 10001 //看完程序后想想这个M干嘛用的,可以去看看哈希算法噢
#define N 10
int main()
{
int a[N],b[M];
int i,n;
memset(b,0,sizeof(b));
for(i=0;i<N;i++)
{
scanf("%d",&n);b[n]++;
}
for(i=0;i<M;i++)
while(b[i]--)
printf("%d ",i);
return 0;
}
程序二:
#include <stdio.h>
#include <string.h>
#define M 10001
#define N 10
int main()
{
int a[N],b[M];
int i,n;
memset(b,0,sizeof(b));
for(i=0;i<N;i++)
{
scanf("%d",&n);b[n]++;
}
for(i=1;i<M;i++)
b[i]+=b[i-1];
for(i=N-1;i>=0;i--)
a[b[i]--]=i+1;
for(i=1;i<=N;i++)
printf("%d ",a[i]);
return 0;
}
对比下一下,然后看看程序二的输出结果,很有意思哦。后缀数组里会用到哦,这是一种算法思想!