fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main(){
  5. int a[]={2,3,5,2,3};
  6. int n=sizeof(a)/sizeof(int);
  7. int max=a[0];
  8. for (int i=1;i<n;i++) if (a[i]>max) max=a[i];
  9. int *temp=new int[max+1];
  10. int *output=new int[n];
  11.  
  12. for (int i=0;i<n;i++) output[i]=0;
  13. for (int i=0;i<max+1;i++) temp[i]=0;
  14.  
  15. for (int i=0;i<n;i++) ++temp[a[i]];
  16.  
  17. /* Traditional way
  18.   for (int i=1;i<max+1;i++) temp[i]+=temp[i-1];
  19.   for (int i=n-1;i>=0;i--) {
  20.   output[temp[a[i]]-1]=a[i];
  21.   --temp[a[i]];
  22.   }
  23.   */
  24.  
  25. // My way
  26. for (int i=0,k=0;i<max+1;i++) {
  27. while (temp[i]) {
  28. --temp[i];
  29. output[k++]=i;
  30. }
  31. }
  32.  
  33. for (int i=0;i<n;i++) cout<<output[i]<<" ";
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0s 3472KB
stdin
Standard input is empty
stdout
2  2  3  3  5