avr39-ripe

sortBuble fPtr template

Apr 22nd, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <functional>
  4.  
  5. using namespace std;
  6.  
  7. template <typename T> int sortUp(T a, T b)
  8. {
  9.     return a < b;
  10. }
  11.  
  12. template <typename T> int sortDown(T a, T b)
  13. {
  14.     return a > b;
  15. }
  16.  
  17. template <typename T> void arrPrint(T* arr, int arrSize)
  18. {
  19.     for (int i = 0; i < arrSize; i++) { cout << arr[i] << " "; }    cout << endl;
  20. }
  21. template <typename T> void sortArr(T* arr, int arrSize, std::function<int(T, T)> sortCrit)
  22. {
  23.     arrPrint(arr, arrSize);
  24.     for (int head = 0; head < arrSize; head++)
  25.     {
  26.         for (int tail = arrSize - 1; tail > head; tail--)
  27.         {
  28.  
  29.             if (sortCrit(arr[tail],arr[head]))
  30.             {
  31.                 T tmp = arr[tail];
  32.                 arr[tail] = arr[head];
  33.                 arr[head] = tmp;
  34.  
  35.                 arrPrint(arr, arrSize);
  36.             }
  37.         }
  38.  
  39.     }
  40.     arrPrint(arr, arrSize);
  41. }
  42.  
  43. int main()
  44. {
  45.     const int arrSize = 10;
  46.     int arr[arrSize] = { 6,1,4,2,8,9,11,3,2,1 };
  47.     //int arr[arrSize] = { 1,1,1,2,2,9,11,1,2,1 };
  48.     //int arr[arrSize] = { 1,2,3,4,5,6,7,8,9,10 };
  49.     //int arr[arrSize] = { 1,2,3,4,5,6,7,9,8,7 };
  50.     //int arr[arrSize] = { 10,9,8,7,6,5,4,3,2,1 };
  51.     //int arr[arrSize] = {0};
  52.    
  53.     sortArr<int>(arr, 10, [=](int a, int b)->int { return a < b; });
  54.     cout << endl;
  55.     sortArr<int>(arr, 10, sortDown<int>);
  56.     cout << endl;
  57.     sortArr<int>(arr, 10, [=](int a, int b)->int { return a < b; });
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment