#include <stdio.h>
void display (int a[],int len){
for(int i=0;i<len;i++){
printf("%d ",a[i]);
}
printf("\n");
}
int findMax(int a[],int len){
int max=a[0];
for(int i=1;i<len;i++){
if(max<a[i]){
max=a[i];
}
}
return max;
}
void countSort(int a[],int len){
static int bLen=10;
int b[bLen];
int c[bLen];
int d[bLen];
for(int i=0;i<bLen;i++){
b[i]=0;
c[i]=0;
d[i]=0;
}
for(int i=0;i<len;i++){
b[a[i]]++;
}
for(int i=1;i<bLen;i++){
for(int j=i;j>=0;j--){
c[i]+=b[j];
}
}
for(int i=len-1;i>=0;i--){
c[a[i]]-=1;
d[c[a[i]]]=a[i];
}
for(int i=0;i<len;i++){
a[i]=d[i];
}
}
int main () {
int a[]={1,6,2,7,3,8,3,2,4,5,2,1,2,3,5,6};
countSort(a,sizeof(a)/sizeof(int));
display(a,sizeof(a)/sizeof(int));
int a1[]={3,1,2,4,6,2,9,3,5,3,5,3,2,5,8,4,6};
countSort(a1,sizeof(a1)/sizeof(int));
display(a1,sizeof(a1)/sizeof(int));
int a2[]={3,2,5,6,3,6,8,8,3,3,7,9,0,4,2};
countSort(a2,sizeof(a2)/sizeof(int));
display(a2,sizeof(a2)/sizeof(int));
}