Advertisement
Petro_zzz

my_lib_sort

Apr 24th, 2024
730
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.01 KB | None | 0 0
  1. #pragma once
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. template <class T>
  7. void my_swap(T& a, T& b) {
  8.     //cout << "IN FUN: " << a << b << endl;
  9.     T tmp = b;
  10.     b = a;
  11.     a = tmp;
  12.     //cout << "IN FUN: " << a << b << endl;
  13. }
  14.  
  15. template <class T>
  16. void show_arr(int size, T arr[]) {
  17.     for (int k = 0; k < size; k++)
  18.         cout << arr[k] << " ";
  19.     cout << endl;
  20. }
  21.  
  22. template <class T>
  23. int find(int size, T arr[], T ell) {
  24.     for (int k = 0; k < size; k++) {
  25.         if (arr[k] == ell)
  26.             return k;
  27.     }
  28.     return -1;
  29. }
  30.  
  31. void discrete_sort(int size, int arr[]) {
  32.     // элементы массива могут быть { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  33.     int frequency[10]{};
  34.  
  35.     for (int k = 0; k < size; k++) {
  36.         frequency[arr[k]]++;
  37.     }
  38.  
  39.     int m = 0;
  40.     for (int k = 0; k < 10; k++) {
  41.         for (int n = 0; n < frequency[k]; n++) {
  42.             arr[m] = k;
  43.             m++;
  44.         }
  45.     }
  46.     show_arr(10, frequency);
  47. }
  48.  
  49. template <class T>
  50. void bubble_sort(int size, T arr[]) {
  51.    
  52.     bool is_sorted;
  53.     for (int k = 0; k < size; k++) {
  54.         is_sorted = true;
  55.         for (int n = 1; n < size; n++)
  56.             if (arr[n] < arr[n - 1]) {
  57.                 my_swap(arr[n], arr[n - 1]);
  58.                 is_sorted = false;
  59.                 //show_arr(size, arr);
  60.             }
  61.         if (is_sorted)
  62.             break;
  63.     }
  64. }
  65.  
  66. void select_sort(int size, int arr[]) {
  67.     int min_id;
  68.     for (int n = 0; n < size - 1; n++) {
  69.         min_id = n;
  70.         for (int k = n + 1; k < size; k++) {
  71.             if (arr[k] < arr[min_id]) {
  72.                 min_id = k;
  73.             }
  74.         }
  75.         my_swap(arr[n], arr[min_id]);
  76.         show_arr(size, arr);
  77.     }
  78.  
  79. }
  80.  
  81. void insert_sort(int size, int arr[]) {
  82.     int n = 0;
  83.     for (int k = 1; k < size; k++) {
  84.         n = k;
  85.         while ((n > 0) && (arr[n] < arr[n - 1])) {
  86.             my_swap(arr[n], arr[n - 1]);
  87.             n--;
  88.             //show_arr(size, arr);
  89.         }
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement