Advertisement
allia

лексическая сортировка сначала наименьшей длины

Oct 19th, 2020
2,188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. void second_sort (string *arr, int index, int first)
  8. {
  9.   int razmer = arr[index].size();
  10.   int skolko = index+first+1;
  11.   int l = 0;
  12.  
  13.  for (int i = first+1; i < skolko; i++)
  14.    for (int j = first; j < skolko - i; j++)
  15.       if (arr[j] > arr[j+1])
  16.         swap (arr[j], arr[j+1]);
  17. }
  18.  
  19. void first_sort (string *arr, int n)
  20. {
  21.    for (int i=1; i<n; ++i)
  22.       for (int j=0; j<n-i; j++)
  23.         if (arr[j].size() > arr[j+1].size())
  24.          swap (arr[j], arr[j+1]);
  25. }
  26.  
  27. int main()
  28. {
  29.   cout.flush();
  30.   int n = 0, index = 0;
  31.   cin >> n;
  32.  
  33.  string *arr = new string[n];
  34.  
  35.   for (int i = 0; i<n; i++)
  36.   {
  37.     string buffer;
  38.     cin >> buffer;
  39.     arr[i] = buffer;
  40.   }
  41.  
  42. first_sort(arr, n);
  43.  
  44. int i = n-1, shet=0;
  45.  
  46.  while(i > 0)
  47.     {
  48.       while (arr[i].size() == arr[i-1].size())
  49.       {
  50.         index++;
  51.         i--;
  52.       }
  53.       shet = i;
  54.       if (index != 0)
  55.        {
  56.          second_sort (arr, index, shet);
  57.          index = 0;
  58.        }
  59.        i--;
  60.    }
  61.  
  62.  
  63. for (int i = 0; i<n; i++)
  64.   cout << arr[i] << " ";
  65.  
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement