![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 #include2 #include 3 4 int a[10010],w[10010],p[10010],o[10010]; 5 6 void Barrel_Sort(int *a,int n,int mx) 7 { 8 int i; 9 memset(w,0,sizeof(w));10 for(i=1;i<=n;i++)11 w[a[i]]++;12 for(i=1;i<=mx;i++)13 w[i]=w[i]+w[i-1];14 for(i=1;i<=n;i++){15 p[i]=w[a[i]];16 w[a[i]]--;17 }18 for(i=1;i<=n;i++)19 o[p[i]]=i;20 }21 22 int main()23 {24 int n,i,mx;25 while(scanf("%d",&n)!=EOF)26 {27 memset(p,0,sizeof(p));28 mx=0;29 for(i=1;i<=n;i++)30 {31 scanf("%d",&a[i]);32 if(a[i]>mx)33 mx=a[i];34 }35 Barrel_Sort(a,n,mx);36 printf("%d\n",n-1);37 for(i=1;i