Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <Windows.h>
- #include <list>
- #include "Header.h"
- //#define LOGS
- using namespace std;
- template <char ch, class T>
- void selectSort(long sz, T arr[]);
- void selectSort(long sz, string arr[], bool isBiger = true);
- template <class T>
- void bubbleSort(long sz, T arr[]);
- void shakerSort(long sz, int arr[]);
- void genArr(int sz, int arr[]);
- template <class T>
- void showArr(int sz, T arr[]);
- // как работают шаблоны для разных типов одновременно
- template <class T>
- void test1(T val) {
- cout << "Template val: " << endl;
- cout.width(7);
- cout << val << " " << sizeof(T) << endl;
- //printf("%f\n", (double)val);
- }
- void test12(int val) {
- cout << "Reload fun val: " << endl;
- cout << val << endl;
- }
- void main() {
- /*
- cout;
- cout << 10.000 << endl;
- test1<double>(10);
- test1<int>(10.1);
- test1('a');
- test1(true);
- */
- string strs[5]{ "Ivan", "Vasiliy", "Artur", "Nikolay", "Leonard" };
- int arr[5]{ 3, 2, 1, 2, 3 };
- selectSort<'<'>(5, arr);
- showArr(5, arr);
- /*
- int arr[5][10];
- genArr(10, arr[0]);
- genArr(10, arr[1]);
- genArr(10, arr[2]);
- genArr(10, arr[3]);
- genArr(10, arr[4]);
- cout << "Before sort:" << endl;
- showArr(10, arr[0]);
- showArr(10, arr[1]);
- showArr(10, arr[2]);
- showArr(10, arr[3]);
- showArr(10, arr[4]);
- bubbleSort(10, arr[0]);
- bubbleSort(10, arr[1]);
- bubbleSort(10, arr[2]);
- bubbleSort(10, arr[3]);
- bubbleSort(10, arr[4]);
- cout << "After sort:" << endl;
- showArr(10, arr[0]);
- showArr(10, arr[1]);
- showArr(10, arr[2]);
- showArr(10, arr[3]);
- showArr(10, arr[4]);
- */
- /*
- const int sz = 10;
- int arr[sz];
- genArr(sz, arr);
- showArr(sz, arr);
- shakerSort(sz, arr);
- showArr(sz, arr);
- */
- }
- template <char ch, class T>
- void selectSort(long sz, T arr[]) {
- long i, j, k;
- T tmp;
- if (ch == '>') {
- // перебор по текущим значениям
- for (i = 0; i < sz; i++) {
- k = i;
- tmp = arr[i];
- // поиск минимума
- for (j = i + 1; j < sz; j++) {
- if (arr[j] > tmp) {
- k = j;
- tmp = arr[j];
- }
- }
- // обмен текущего значения с минимальным
- if (k != i) {
- arr[k] = arr[i];
- arr[i] = tmp;
- }
- }
- }
- if (ch == '<') {
- // перебор по текущим значениям
- for (i = 0; i < sz; i++) {
- k = i;
- tmp = arr[i];
- // поиск минимума
- for (j = i + 1; j < sz; j++) {
- if (arr[j] < tmp) {
- k = j;
- tmp = arr[j];
- }
- }
- // обмен текущего значения с минимальным
- if (k != i) {
- arr[k] = arr[i];
- arr[i] = tmp;
- }
- }
- }
- }
- void selectSort(long sz, string arr[], bool isBiger /* = true*/) {
- long i, j, k;
- string tmp;
- if (isBiger) {
- // перебор по текущим значениям
- for (i = 0; i < sz; i++) {
- k = i;
- tmp = arr[i];
- // поиск минимума
- for (j = i + 1; j < sz; j++) {
- if (arr[j] > tmp) {
- k = j;
- tmp = arr[j];
- }
- }
- // обмен текущего значения с минимальным
- if (k != i) {
- arr[k] = arr[i];
- arr[i] = tmp;
- }
- }
- } else {
- // перебор по текущим значениям
- for (i = 0; i < sz; i++) {
- k = i;
- tmp = arr[i];
- // поиск минимума
- for (j = i + 1; j < sz; j++) {
- if (arr[j] < tmp) {
- k = j;
- tmp = arr[j];
- }
- }
- // обмен текущего значения с минимальным
- if (k != i) {
- arr[k] = arr[i];
- arr[i] = tmp;
- }
- }
- }
- }
- template <class T>
- void bubbleSort(long sz, T arr[]) {
- long i, j;
- T tmp;
- for (i = 0; i < sz; i++)
- for (j = sz - 1; j > 0; j--)
- if (arr[j - 1] > arr[j]) {
- tmp = arr[j - 1];
- arr[j - 1] = arr[j];
- arr[j] = tmp;
- }
- }
- void shakerSort(long sz, int arr[]) {
- int j, k = sz - 1;
- int lb = 1, ub = sz - 1;
- int tmp;
- do {
- for (j = ub; j >= 0; j--) {
- if (arr[j - 1] > arr[j]) {
- tmp = arr[j - 1];
- arr[j - 1] = arr[j];
- arr[j] = tmp;
- k = j;
- #ifdef LOGS
- Sleep(7000);
- showArr(sz, arr);
- #endif // LOGS
- }
- }
- lb = k + 1;
- for (j = 1; j <= ub; j++) {
- if (arr[j - 1] > arr[j]) {
- tmp = arr[j - 1];
- arr[j - 1] = arr[j];
- arr[j] = tmp;
- k = j;
- #ifdef LOGS
- Sleep(7000);
- showArr(sz, arr);
- #endif // LOGS
- }
- }
- ub = k - 1;
- } while (lb < ub);
- }
- void genArr(int sz, int arr[]) {
- for (int k = 0; k < sz; k++)
- arr[k] = rand() % 100;
- }
- template <class T>
- void showArr(int sz, T arr[]) {
- for (int k = 0; k < sz; k++)
- cout << arr[k] << " ";
- cout << endl;
- }
- // https://pastebin.com/V5czMCjc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement