Advertisement
nikitakrut58

sort1

Feb 18th, 2020
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. void insertionSort(int* mas, int n)
  8.  
  9. {
  10.  
  11.     unsigned long int M = 0, C = 0;
  12.  
  13.     for (int j = 1; j < n; j++)
  14.  
  15.     {
  16.  
  17.         int key = mas[j];
  18.  
  19.         int i = j - 1;
  20.  
  21.         C++;
  22.  
  23.         while (i >= 0 && mas[i] > key)
  24.  
  25.         {
  26.  
  27.             mas[i + 1] = mas[i];
  28.  
  29.             i--;
  30.  
  31.             C++;
  32.  
  33.             M++;
  34.  
  35.         }
  36.  
  37.         mas[i + 1] = key;
  38.  
  39.     }
  40.  
  41.     if (n != 10) std::cout << "C = " << C << " M = " << M << "\n";
  42.  
  43. }
  44.  
  45. void invertSort(int* mas, int n)
  46.  
  47. {
  48.  
  49.     int max_idx;
  50.  
  51.     for (int i = 0; i < n - 1; i++)
  52.  
  53.     {
  54.  
  55.         max_idx = i;
  56.  
  57.         for (int j = i + 1; j < n; j++)
  58.  
  59.         {
  60.  
  61.             if (mas[j] > mas[max_idx])
  62.  
  63.             {
  64.  
  65.                 max_idx = j;
  66.  
  67.             }
  68.  
  69.         }
  70.  
  71.         std::swap(mas[max_idx], mas[i]);
  72.  
  73.     }
  74.  
  75. }
  76.  
  77. int main()
  78.  
  79. {
  80.  
  81.     const int n1 = 50000, n2 = 60000, n3 = 70000, n4 = 80000, n5 = 90000;
  82.  
  83.     setlocale(0, "rus");
  84.  
  85.     srand(time(0));
  86.  
  87.     int *mas=new int[10],*mas1=new int[n1],*mas2=new int [n2], *mas3=new int[n3], *mas4=new int[n4], *mas5=new int[n5];
  88.  
  89.     std::cout << "Практическая работа №1 Сравнение простых алгоритмов сортировки массивов. Нестягин Никита. ИКБО-14-19\n";
  90.  
  91.     std::cout << "Заполните тестовый массив:\n";
  92.  
  93.     for (int i = 0; i < 10; i++)
  94.  
  95.     {
  96.  
  97.         std::cin >> mas[i];
  98.  
  99.     }
  100.  
  101.     std::cout << "Введённый массив:\n";
  102.  
  103.     for (int i = 0; i < 10; i++)
  104.  
  105.     {
  106.  
  107.         std::cout << mas[i] << " ";
  108.  
  109.     }
  110.  
  111.     std::cout << "\n";
  112.  
  113.     insertionSort(mas, 10);
  114.  
  115.     std::cout << "Результат сортировки:\n";
  116.  
  117.     for (int i = 0; i < 10; i++)
  118.  
  119.     {
  120.  
  121.         std::cout << mas[i] << " ";
  122.  
  123.     }
  124.  
  125.     std::cout << "\n";
  126.  
  127.     //Заполнение массивов с помощью псевдослучайной генерации чисел
  128.  
  129.     for (int i = 0; i < n1; i++)
  130.  
  131.     {
  132.  
  133.         mas1[i] = rand();
  134.  
  135.     }
  136.  
  137.     for (int i = 0; i < n2; i++)
  138.  
  139.     {
  140.  
  141.         mas2[i] = rand();
  142.  
  143.     }
  144.  
  145.     for (int i = 0; i < n3; i++)
  146.  
  147.     {
  148.  
  149.         mas3[i] = rand();
  150.  
  151.     }
  152.  
  153.     for (int i = 0; i < n4; i++)
  154.  
  155.     {
  156.  
  157.         mas4[i] = rand();
  158.  
  159.     }
  160.  
  161.     for (int i = 0; i < n5; i++)
  162.  
  163.     {
  164.  
  165.         mas5[i] = rand();
  166.  
  167.     }
  168.  
  169.     std::cout << "-------------------------\nn1 = 50 000\nСредний случай\n";
  170.  
  171.     insertionSort(mas1, n1);
  172.  
  173.     std::cout << "Наилучший случай\n";
  174.  
  175.     insertionSort(mas1, n1);
  176.  
  177.     invertSort(mas1, n1);
  178.  
  179.     std::cout << "Наихудший случай\n";
  180.  
  181.     insertionSort(mas1, n1);
  182.  
  183.     std::cout << "-------------------------\nn2 = 60 000\nСредний случай\n";
  184.  
  185.     insertionSort(mas2, n2);
  186.  
  187.     std::cout << "Наилучший случай\n";
  188.  
  189.     insertionSort(mas2, n2);
  190.  
  191.     invertSort(mas2, n2);
  192.  
  193.     std::cout << "Наихудший случай\n";
  194.  
  195.     insertionSort(mas2, n2);
  196.  
  197.     std::cout << "-------------------------\nn3 = 70 000\nСредний случай\n";
  198.  
  199.     insertionSort(mas3, n3);
  200.  
  201.     std::cout << "Наилучший случай\n";
  202.  
  203.     insertionSort(mas3, n3);
  204.  
  205.     invertSort(mas3, n3);
  206.  
  207.     std::cout << "Наихудший случай\n";
  208.  
  209.     insertionSort(mas3, n3);
  210.  
  211.     std::cout << "-------------------------\nn4 = 80 000\nСредний случай\n";
  212.  
  213.     insertionSort(mas4, n4);
  214.  
  215.     std::cout << "Наилучший случай\n";
  216.  
  217.     insertionSort(mas4, n4);
  218.  
  219.     invertSort(mas4, n4);
  220.  
  221.     std::cout << "Наихудший случай\n";
  222.  
  223.     insertionSort(mas4, n4);
  224.  
  225.     std::cout << "-------------------------\nn5 = 90 000\nСредний случай\n";
  226.  
  227.     insertionSort(mas5, n5);
  228.  
  229.     std::cout << "Наилучший случай\n";
  230.  
  231.     insertionSort(mas5, n5);
  232.  
  233.     invertSort(mas5, n5);
  234.  
  235.     std::cout << "Наихудший случай\n";
  236.  
  237.     insertionSort(mas5, n5);
  238.  
  239.     system("pause");
  240.  
  241.     delete[] mas; delete[] mas1; delete[] mas2; delete[] mas3; delete[] mas4; delete[] mas5;
  242. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement