avr39ripe

oladushkiSort

Nov 17th, 2020
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. int main()
  4. {
  5.     const int arrSize{10};
  6.     int arr[arrSize]{5,7,9,8,1,3,2,4,6,1};
  7.     //int arr[arrSize]{1,2,3,4,5,6,7,8,9,10};
  8.     //int arr[arrSize]{10,9,8,7,6,5,4,3,2,1};
  9.     //int arr[arrSize]{};
  10.     int tmp;
  11.  
  12.     for (int i{0} ; i<arrSize; ++i){std::cout << arr[i] << ' '; }; std::cout << '\n';
  13.  
  14.     for (int tail{arrSize - 1}; tail >=0; --tail)
  15.     {
  16.         int maxIdx{tail}; // Find max element from tail to head
  17.         for (int maxTail{tail}; maxTail>=0; --maxTail)
  18.         {
  19.             if (arr[maxTail] > arr[maxIdx]) {maxIdx = maxTail;}
  20.         }
  21.         std::cout << "Max: " << arr[maxIdx] << '\n';
  22.         if (maxIdx != tail)//If max element already at tail position no need to move anything
  23.         {
  24.             if (maxIdx !=0) //If max element not at the head position, need turn stack from max element
  25.             {
  26.                 for (int turnTail{maxIdx}, turnHead=0; turnTail > turnHead; --turnTail, ++turnHead)
  27.                 {
  28.                     tmp = arr[turnHead];
  29.                     arr[turnHead] = arr[turnTail];
  30.                     arr[turnTail] = tmp;
  31.                 }
  32.                 for (int i{0} ; i<arrSize; ++i){std::cout << arr[i] << ' '; }; std::cout << '\n';
  33.             }
  34.             for (int turnTail{tail}, turnHead{0}; turnTail > turnHead; --turnTail, ++turnHead) //Turn stack again from tail position, so max element apear at tail
  35.             {
  36.                 tmp = arr[turnHead];
  37.                 arr[turnHead] = arr[turnTail];
  38.                 arr[turnTail] = tmp;
  39.             }
  40.             for (int i{0} ; i<arrSize; ++i){std::cout << arr[i] << ' '; }; std::cout << '\n';
  41.         }
  42.  
  43.     }
  44.     for (int i{0} ; i<arrSize; ++i){std::cout << arr[i] << ' '; }; std::cout << '\n';
  45. }
  46.  
Advertisement
Add Comment
Please, Sign In to add comment