void
CountSort(
int
a[],
int
n)
{
int *b=new int[n];
int i,k,max;
max=-2000000000;
for(i=0;i<n;i++)
if(a[i]>max) max=a[i];
int *c=new int[n+1];
for(i=0;i<max;i++)
c[i]=0;
for(i=0;i<n;i++)
c[a[i]]++; // count
for(i=1;i<n;i++)
c[i]+=c[i-1]; // add
for(i=n;i>=0;i--){
b[c[a[i]]]=a[i];
c[a[i]]--;
}
}
int *b=new int[n];
int i,k,max;
max=-2000000000;
for(i=0;i<n;i++)
if(a[i]>max) max=a[i];
int *c=new int[n+1];
for(i=0;i<max;i++)
c[i]=0;
for(i=0;i<n;i++)
c[a[i]]++; // count
for(i=1;i<n;i++)
c[i]+=c[i-1]; // add
for(i=n;i>=0;i--){
b[c[a[i]]]=a[i];
c[a[i]]--;
}
}