bogdan2004333

Untitled

Nov 1st, 2022
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <locale.h>
  3. #include <time.h>
  4. #include <stdlib.h>
  5.  
  6. // объявление перестановок и сравнений //
  7. int swap = 0, comp = 0;
  8.  
  9. //вывод массива //
  10. void dinarr(int n, const int *arr) {
  11.     for (int i = 0; i < n; i++) {
  12.         printf("%d ", *(arr + i));
  13.     }
  14. }
  15.  
  16. // рандом //
  17. int irandom(int low, int up) {
  18.     int num = (rand() % (up - low + 1)) + low;
  19.     return num;
  20. }
  21.  
  22. // рандом версия 2.0 //
  23. int iirandom(int *arr, int n, int a, int b) {
  24.     srand(time(0));
  25.     rand();
  26.     for (int i = 0; i < n; i++) {
  27.         arr[i] = irandom(a, b);
  28.     }
  29. }
  30.  
  31. // метод сравненений по возрастанию //
  32. int irl(int *arr, int n) {
  33.     for (int i = 0; i < n; i++) {
  34.         int minp = i, temp;
  35.  
  36.         for (int j = i + 1; j < n; j++) {
  37.  
  38.             if (*(arr + minp) > *(arr + j)) {
  39.                 minp = j;
  40.                 comp++;
  41.             }
  42.             temp = arr[minp];
  43.             arr[minp] = arr[i];
  44.             arr[i] = temp;
  45.             swap++;
  46.  
  47.         }
  48.     }
  49. }
  50.  
  51. // метод сравнений по убыванию //
  52. int irl1(int *arr, int n) {
  53.     for (int i = 0; i < n; i++) {
  54.         int temp, max = i;
  55.         for (int j = i + 1; j < n; j++) {
  56.             if (*(arr + max) < *(arr + j))
  57.                 max = j;
  58.  
  59.         }comp++;
  60.  
  61.         if (max != i) {
  62.             temp = arr[max];
  63.             arr[max] = arr[i];
  64.             arr[i] = temp;
  65.             swap++;
  66.         }
  67.  
  68.     }
  69. }
  70.  
  71. // метод пузырек по возрастанию //
  72. int bubbleirl(int *arr, int n) {
  73.  
  74.     for (int i = 0; i < n; i++) {
  75.         int temp;
  76.  
  77.         for (int j = 0; j < n - 1; j++) {
  78.             swap++;
  79.             if (*(arr + j) > *(arr + j + 1)) {
  80.                 temp = arr[j];
  81.                 comp++;
  82.                 arr[j] = arr[j + 1];
  83.                 arr[j + 1] = temp;
  84.             }
  85.         }
  86.     }
  87. }
  88.  
  89. // метод пузырек по убыванию //
  90. int bubbleirl1(int *arr, int n) {
  91.     for (int i = 0; i < n; i++) {
  92.         int temp;
  93.  
  94.         for (int j = 0; j < n - 1; j++) {
  95.             swap++;
  96.             if (*(arr + j) < *(arr + j + 1)) {
  97.                 temp = arr[j];
  98.                 comp++;
  99.                 arr[j] = arr[j + 1];
  100.                 arr[j + 1] = temp;
  101.             }
  102.         }
  103.     }
  104. }
  105.  
  106. // копирование массива //
  107. int copy(int *arr, int *copyarr, int n) {
  108.     for (int i = 0; i < n; i++) {
  109.         copyarr[i] = arr[i];
  110.     }
  111. }
  112.  
  113. // объявление массивов //
  114. int *arr1, *arr11, *arr_5_2, *arr_50_2, *arr_500_2, *arr_5, *arr_50, *arr_500, *arrbuble1;
  115. int number[] = {5, 50, 500};
  116.  
  117. int main() {
  118.     setlocale(0, "");
  119.     // выделение памяти через calloc(malloc зло(( ) //
  120.     arr1 = calloc(6, sizeof(int));
  121.     arr11 = calloc(5, sizeof(int));
  122.     arrbuble1 = calloc(5, sizeof(int));
  123.     arr_5 = calloc(5, sizeof(int));
  124.     arr_50 = calloc(50, sizeof(int));
  125.     arr_500 = calloc(500, sizeof(int));
  126.     arr_5_2 = calloc(5, sizeof(int));
  127.     arr_50_2 = calloc(50, sizeof(int));
  128.     arr_500_2 = calloc(500, sizeof(int));
  129.     // рандом массива //
  130.     iirandom(arr1, 5, 1, 10);
  131.     iirandom(arrbuble1, 5, 1, 10);
  132.     iirandom(arr_5, 5, 1, 20);
  133.     iirandom(arr_50, 50, 1, 20);
  134.     iirandom(arr_500, 500, 1, 20);
  135.     copy(arr1, arr11, 5);
  136.     copy(arrbuble1, arr11, 5);
  137.     copy(arr_5, arr_5_2, 5);
  138.     copy(arr_50, arr_50_2, 50);
  139.     copy(arr_500, arr_500_2, 500);
  140.     // Таблица 1 //
  141.     printf("Количество элементов: %d. Заданный массив: ", number[0]);
  142.     dinarr(5, arr1);
  143.     printf(". Сортировка по возрастанию\nМетод           Результат       Сравнений       Перестановок\n");
  144.     irl(arr1, 5);
  145.     printf("сравнений (n)   ");
  146.     dinarr(5, arr1);
  147.     printf("%10d%17d\n", comp, swap);
  148.     swap = 0;
  149.     comp = 0;
  150.     irl(arr1, 5);
  151.     printf("сравнений (о)   ");
  152.     dinarr(5, arr1);
  153.     printf("%10d%17d\n", comp, swap);
  154.     swap = 0, comp = 0;
  155.     bubbleirl(arrbuble1, 5);
  156.     printf("пузырёк (n)     ");
  157.     dinarr(5, arrbuble1);
  158.     printf("%10d%17d\n", comp, swap);
  159.     swap = 0, comp = 0;
  160.     bubbleirl(arrbuble1, 5);
  161.     printf("пузырёк (0)     ");
  162.     dinarr(5, arrbuble1);
  163.     printf("%10d%17d\n\n", comp, swap);
  164.     swap = 0, comp = 0;
  165.     // Таблица 2 //
  166.     printf("Количество элементов: %d. Заданный массив: ", number[0]);
  167.     dinarr(5, arr11);
  168.     printf(". Сортировка по убыванию\nМетод           Результат       Сравнений       Перестановок\n");
  169.     irl1(arr11, 5);
  170.     printf("сравнений (n)   ");
  171.     dinarr(5, arr11);
  172.     printf("%10d%17d\n", comp, swap);
  173.     swap = 0;
  174.     comp = 0;
  175.     irl1(arr11, 5);
  176.     printf("сравнений (о)   ");
  177.     dinarr(5, arr11);
  178.     printf("%10d%17d\n", comp, swap);
  179.     swap = 0, comp = 0;
  180.     bubbleirl1(arrbuble1, 5);
  181.     printf("пузырёк (n)     ");
  182.     dinarr(5, arrbuble1);
  183.     printf("%10d%17d\n", comp, swap);
  184.     swap = 0, comp = 0;
  185.     bubbleirl1(arrbuble1, 5);
  186.     printf("пузырёк (0)     ");
  187.     dinarr(5, arrbuble1);
  188.     printf("%10d%17d\n\n", comp, swap);
  189.     swap = 0, comp = 0;
  190.     // Таблица 3 //
  191.     printf("Метод: сравнений (n). Сортировка по возрастанию\n");
  192.     printf("N               Сравнений       Перестановок  \n");
  193.     irl(arr_5, 5);
  194.     printf("%d%20d%17d\n", number[0], comp, swap);
  195.     swap = 0, comp = 0;
  196.     irl(arr_50, 50);
  197.     printf("%d%20d%17d\n", number[1], comp, swap);
  198.     swap = 0, comp = 0;
  199.     irl(arr_500, 500);
  200.     printf("%d%20d%17d\n\n", number[2], comp, swap);
  201.     swap = 0, comp = 0;
  202.     // Таблица 4 //
  203.     printf("Метод: пузырёк (n). Сортировка по возрастанию\n");
  204.     printf("N               Сравнений       Перестановок  \n");
  205.     bubbleirl(arr_5_2, 5);
  206.     printf("%d%20d%17d\n", number[0], comp, swap);
  207.     swap = 0, comp = 0;
  208.     bubbleirl(arr_50_2, 50);
  209.     printf("%d%20d%17d\n", number[1], comp, swap);
  210.     swap = 0, comp = 0;
  211.     bubbleirl(arr_500_2, 500);
  212.     printf("%d%20d%17d\n\n", number[2], comp, swap);
  213.     // Освобождение памяти //
  214.     free(arr1);
  215.     free(arr11);
  216.     free(arrbuble1);
  217.     free(arr_5);
  218.     free(arr_50);
  219.     free(arr_500);
  220.     free(arr_5_2);
  221.     free(arr_50_2);
  222.     free(arr_500_2);
  223.  
  224.     return 0;
  225. }
Advertisement
Add Comment
Please, Sign In to add comment