Advertisement
hurmawe

day4

Apr 1st, 2022
596
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.80 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3.  
  4.  
  5. int random(int N)
  6. {
  7.     return rand() % N;
  8. }
  9.  
  10. int B_qunter = 0;
  11. int C_qunter = 0;
  12.  
  13.  
  14. void Qsort(int A[],int first, int last)
  15. {
  16.     int L, R, vr, X;
  17.     if (first < last)
  18.     {
  19.         X = A[(last + first) / 2];
  20.         L = first; R = last;
  21.         while (L <= R)
  22.         {
  23.             while (A[L] > X) L++;
  24.             while (A[R] < X) R--;
  25.             if (L <= R) {
  26.                 vr = A[L];
  27.                 A[L] = A[R];
  28.                 A[R] = vr;
  29.                 L++; R--;
  30.             }
  31.         }
  32.         Qsort(A, first, R);
  33.         Qsort(A, L, last);
  34.     }
  35. }
  36. void Qsort_with_qunter(int B[], int first, int last)
  37. {
  38.     int L, R, vr, X;
  39.     if (first < last)
  40.     {
  41.         X = B[(last + first) / 2];
  42.         L = first; R = last;
  43.         while (L <= R)
  44.         {
  45.             while (B[L] > X) L++;
  46.             while (B[R] < X) R--;
  47.             if (L <= R) {
  48.                 B_qunter++;
  49.                 vr = B[L];
  50.                 B[L] = B[R];
  51.                 B[R] = vr;
  52.                 L++; R--;
  53.             }
  54.            
  55.         }
  56.    
  57.             Qsort_with_qunter(B, first, R);
  58.        
  59.             Qsort_with_qunter(B, L, last);
  60.     }
  61. }
  62.  
  63. int main()
  64. {
  65.     setlocale(LC_ALL, "Russian");
  66.     srand(time(0));
  67.  
  68.     int B[500];
  69.     int C[500];
  70.  
  71.     int A[10];
  72.    
  73.     int flag;
  74.     int vr;
  75.     printf("Задание 1\n");
  76.    
  77.     printf("Исходный массив\n");
  78.     for (int i = 0; i < 10; i++)
  79.     {
  80.         A[i] = random(101);
  81.         printf("%d ", A[i]);
  82.     }
  83.     printf("\n");
  84.    
  85.     int i = 0;
  86.     do {
  87.         flag = 0; // сбросить флаг
  88.         for (int j = 8; j >= i; j--)
  89.             if (A[j]%10 > A[j + 1]%10) {
  90.                 vr = A[j];
  91.                 A[j] = A[j + 1];
  92.                 A[j + 1] = vr;
  93.                 flag = 1; // поднять флаг
  94.             }
  95.         i++;
  96.     } while (flag);
  97.  
  98.     printf("Результат\n");
  99.     for (int i = 0; i < 10; i++)
  100.     {
  101.         printf("%d ", A[i]);
  102.     }
  103.    
  104.  
  105.     ///////////////////////////////////////////////////
  106.    
  107.     printf("\n\n\nЗадание 2\n");
  108.     printf("Исходный массив\n");
  109.  
  110.     for (int i = 0; i < 10; i++)
  111.     {
  112.         A[i] = random(101);
  113.         printf("%d ", A[i]);
  114.     }
  115.     printf("\n");
  116.    
  117.     i = 0;
  118.     do {
  119.         flag = 0;
  120.         for (int j = 3; j >= i; j--)
  121.         {
  122.             if (A[j] > A[j + 1])
  123.             {
  124.                
  125.                 vr = A[j];
  126.                 A[j] = A[j + 1];
  127.                 A[j + 1] = vr;
  128.                 flag = 1;
  129.             }
  130.         }
  131.         i++;
  132.     } while (flag);
  133.  
  134.     i = 5;
  135.     do {
  136.         flag = 0;
  137.         for (int j = 8; j >= i; j--)
  138.         {
  139.             if (A[j] < A[j + 1])
  140.             {
  141.                
  142.                 vr = A[j];
  143.                 A[j] = A[j + 1];
  144.                 A[j + 1] = vr;
  145.                 flag = 1;
  146.             }
  147.         }
  148.         i++;
  149.     } while (flag);
  150.    
  151.     printf("Результат\n");
  152.     for (int i = 0; i < 10; i++)
  153.     {
  154.         printf("%d ", A[i]);
  155.     }
  156.  
  157.     ///////////////////////////
  158.     printf("\n\n\nЗадание 3\n");
  159.     printf("Исходный массив\n");
  160.  
  161.     for (int i = 0; i < 10; i++)
  162.     {
  163.         A[i] = random(101);
  164.         printf("%d ", A[i]);
  165.     }
  166.     printf("\n");
  167.  
  168.     int qunter = 0;
  169.     for (int i = 0; i < 10; i++)
  170.     {
  171.         if (A[i] % 100 < 10)
  172.             qunter++;
  173.     }
  174.  
  175.     int* array_0dec;
  176.     array_0dec = new int[qunter];
  177.    
  178.    
  179.     for (int i = 0,j=0; i < 10; i++)
  180.     {
  181.         if (A[i] % 100 < 10)
  182.         {
  183.             array_0dec[j] = A[i];
  184.             j++;
  185.         }
  186.     }
  187.  
  188.     printf("Результат\n");
  189.     for (int i = 0; i < qunter; i++)
  190.     {
  191.         printf("%d ", array_0dec[i]);
  192.     }
  193.  
  194.     ///////////////////////////
  195.     printf("\n\n\nЗадание 4\n");
  196.     printf("Исходный массив\n");
  197.  
  198.     for (int i = 0; i < 10; i++)
  199.     {
  200.         A[i] = random(101);
  201.         printf("%d ", A[i]);
  202.     }
  203.     printf("\n");
  204.  
  205.     Qsort(A,0, 10);
  206.  
  207.     printf("Результат\n");
  208.     for (int i = 0; i < 10; i++)
  209.     {
  210.         printf("%d ", A[i]);
  211.     }
  212.    
  213.     ///////////////////////////
  214.     printf("\n\n\nЗадание 5\n");
  215.     for (int i = 0; i < 500; i++)
  216.     {
  217.         vr = random(101);
  218.         B[i] = vr;
  219.         C[i] = vr;
  220.     }
  221.  
  222.     for (int i = 0; i < 499; i++) {
  223.         for (int j = 498; j >= i; j--)
  224.             if (C[j] > C[j + 1]) {
  225.                 vr = C[j];
  226.                 C[j] = C[j + 1];
  227.                 C[j + 1] = vr;
  228.                 C_qunter++;
  229.             }
  230.     }
  231.     //qsortRecursive(B, 500);
  232.     Qsort_with_qunter(B, 0, 500);
  233.  
  234.     printf("Количество методом «пузырька» %d,  методом «быстрой сортировки» %d\n\n", C_qunter,B_qunter);
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement