Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- void wypisz (string * tab,int N)
- {
- for (int i=0;i<N;i++)
- cout << tab[i] << endl;
- }
- int f(char c)
- {
- if (c==0) return 0;
- return (int) c - 96;
- }
- void counting_sort(string * tab,int N,int pos)
- {
- string pom[N];
- int val[27]={};
- for (int i=0;i<N;i++) val[f(tab[i][pos])]++;
- for (int i=1;i<27;i++) val[i]+=val[i-1];
- for (int i=N-1;i>=0;i--)
- pom[--val[f(tab[i][pos])]]=tab[i];
- for (int i=0;i<N;i++)
- tab[i]=pom[i];
- cout << endl;
- }
- void string_sort( string * tab, int N)
- {
- int max_l=0;
- for (int i=0;i<N;i++)
- if (tab[i].length()>max_l) max_l=tab[i].length();
- for (int i=0;i<N;i++)
- while (tab[i].length()<max_l) tab[i]+=(char) 0;
- for (int i=max_l-1;i>=0;i--)
- counting_sort(tab,N,i););
- for (int i=0;i<N;i++)
- {
- int j=0;
- while (tab[i][j]) j++;
- if (j!=max_l) tab[i].erase(j,max_l-j);
- }
- }
- int main ()
- {
- int n;
- cin >> n;
- string tab[n];
- for (int i=0;i<n;i++)
- cin >> tab[i];
- string_sort(tab,n);
- wypisz(tab,n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement