Advertisement
avr39-ripe

sortQSortNew

Feb 29th, 2020
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <iostream>
  2.  
  3.  
  4. template <typename T> void printArray(T arr[], uint16_t size)
  5. {
  6.     for (uint16_t i{ 0 }; i < size; ++i) { std::cout << arr[i] << " "; }; std::cout << '\n';
  7. }
  8.  
  9. template <typename T> void qsort(T arr[], uint16_t head, uint16_t tail)
  10. {
  11.     uint16_t intH = head;
  12.     uint16_t intT = tail;
  13.     T mid = arr[(intH + intT) / 2];
  14.     do
  15.     {
  16.         while (arr[intH] < mid) intH++;
  17.         while (arr[intT] > mid) intT--;
  18.  
  19.         if (intH <= intT)
  20.         {
  21.             T tmp = arr[intH];
  22.             arr[intH] = arr[intT];
  23.             arr[intT] = tmp;
  24.             std::cout << "Mid: " << mid << " Head: " << head << " Tail: " << tail << " intH: " << intH << " intT: " << intT << " " << '\n';
  25.             intH++;
  26.             intT--;
  27.             printArray(arr, 7);
  28.         }
  29.     } while (intH <= intT);
  30.     std::cout << '\n';
  31.  
  32.     if (intT > head) qsort(arr, head, intT);
  33.     if (tail > intH) qsort(arr, intH, tail);
  34. }
  35.  
  36. int main()
  37. {
  38.     float arr[7]{ 4,9,7,6,2,3,8 };
  39.     printArray(arr, 7);
  40.     qsort(arr, 0, 6);
  41.     printArray(arr, 7);
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement