Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. void wypisz (string * tab,int N)
  5. {
  6.     for (int i=0;i<N;i++)
  7.         cout << tab[i] << endl;
  8. }
  9. int f(char c)
  10. {
  11.     if (c==0) return 0;
  12.     return (int) c - 96;
  13. }
  14. void counting_sort(string * tab,int N,int pos)
  15. {
  16.     string pom[N];
  17.     int val[27]={};
  18.     for (int i=0;i<N;i++) val[f(tab[i][pos])]++;
  19.     for (int i=1;i<27;i++) val[i]+=val[i-1];
  20.     for (int i=N-1;i>=0;i--)
  21.         pom[--val[f(tab[i][pos])]]=tab[i];
  22.     for (int i=0;i<N;i++)
  23.         tab[i]=pom[i];
  24.     cout << endl;
  25. }
  26. void string_sort( string * tab, int N)
  27. {
  28.     int max_l=0;
  29.     for (int i=0;i<N;i++)
  30.         if (tab[i].length()>max_l) max_l=tab[i].length();
  31.     for (int i=0;i<N;i++)
  32.         while (tab[i].length()<max_l) tab[i]+=(char) 0;
  33.     for (int i=max_l-1;i>=0;i--)
  34.         counting_sort(tab,N,i););
  35.     for (int i=0;i<N;i++)
  36.     {
  37.         int j=0;
  38.         while (tab[i][j]) j++;
  39.         if (j!=max_l) tab[i].erase(j,max_l-j);
  40.     }
  41. }
  42. int main ()
  43. {
  44.     int n;
  45.     cin >> n;
  46.     string tab[n];
  47.     for (int i=0;i<n;i++)
  48.         cin >> tab[i];
  49.     string_sort(tab,n);
  50.     wypisz(tab,n);
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement