avr39-ripe

sortQsortTemplate

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