fork download
  1. #include<iostream>
  2. #include<vector>
  3. #include<list>
  4. #include<cstdio>
  5. using namespace std;
  6. void radixsort(vector<int>& n,int no_of_dig=10) // no_of_dig = The no. of digits in the biggest no. in the input array..
  7. {
  8. int i,k,temp;
  9. vector<pair<int,int> > m(n.size());
  10. vector<list<pair<int,int> > > bin(10); // One bin for each of the digits [0,9]
  11. list<pair<int,int> >::iterator it;
  12. for(i=0; i<(int)n.size(); i++)
  13. {
  14. m[i].first=m[i].second=n[i];
  15. }
  16. while(no_of_dig--)
  17. {
  18. for(i=0; i<(int)m.size(); i++)
  19. {
  20. temp=m[i].second%10;
  21. m[i].second/=10;
  22. bin[temp].push_back(m[i]);
  23. }
  24. k=0;
  25. for(i=0; i<(int)bin.size(); i++)
  26. {
  27. it=bin[i].begin();
  28. while(it!=bin[i].end())
  29. {
  30. m[k++]=*(it);
  31. it=bin[i].erase(it);
  32. }
  33. }
  34. }
  35. for(i=0; i<(int)n.size(); i++)
  36. {
  37. n[i]=m[i].first;
  38. }
  39. }
  40. int main()
  41. {
  42. int i,size;
  43. scanf("%d",&size);
  44. vector<int> n(size);
  45. for(i=0; i<size; i++)
  46. {
  47. scanf("%d",&n[i]);
  48. }
  49. radixsort(n,7);
  50. for(i=0; i<size; i++)
  51. {
  52. printf("%d\n",n[i]);
  53. }
  54. }
  55.  
Success #stdin #stdout 0s 3436KB
stdin
5
5 4 3 2 1
stdout
1
2
3
4
5