Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "pch.h"
- #include <iostream>
- #include <functional>
- using namespace std;
- template <typename T> int sortUp(T a, T b)
- {
- return a < b;
- }
- template <typename T> int sortDown(T a, T b)
- {
- return a > b;
- }
- template <typename T> void arrPrint(T* arr, int arrSize)
- {
- for (int i = 0; i < arrSize; i++) { cout << arr[i] << " "; } cout << endl;
- }
- template <typename T> void sortArr(T* arr, int arrSize, std::function<int(T, T)> sortCrit)
- {
- arrPrint(arr, arrSize);
- for (int head = 0; head < arrSize; head++)
- {
- for (int tail = arrSize - 1; tail > head; tail--)
- {
- if (sortCrit(arr[tail],arr[head]))
- {
- T tmp = arr[tail];
- arr[tail] = arr[head];
- arr[head] = tmp;
- arrPrint(arr, arrSize);
- }
- }
- }
- arrPrint(arr, arrSize);
- }
- int main()
- {
- const int arrSize = 10;
- int arr[arrSize] = { 6,1,4,2,8,9,11,3,2,1 };
- //int arr[arrSize] = { 1,1,1,2,2,9,11,1,2,1 };
- //int arr[arrSize] = { 1,2,3,4,5,6,7,8,9,10 };
- //int arr[arrSize] = { 1,2,3,4,5,6,7,9,8,7 };
- //int arr[arrSize] = { 10,9,8,7,6,5,4,3,2,1 };
- //int arr[arrSize] = {0};
- sortArr<int>(arr, 10, [=](int a, int b)->int { return a < b; });
- cout << endl;
- sortArr<int>(arr, 10, sortDown<int>);
- cout << endl;
- sortArr<int>(arr, 10, [=](int a, int b)->int { return a < b; });
- }
Advertisement
Add Comment
Please, Sign In to add comment