Advertisement
nikitakrut58

sort2

Feb 18th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3.  
  4. void insertionSort(int* mas, int n)
  5. {
  6.     unsigned long int M = 0, C = 0;
  7.     int last = n; bool ok;
  8.     do {
  9.         last = last - 1;
  10.         ok = true;
  11.         for (int i = 0; i < last; i++) {
  12.             if (mas[i] > mas[i + 1]) {
  13.                 int x = mas[i];
  14.                 mas[i] = mas[i + 1];
  15.                 mas[i + 1] = x;
  16.                 ok = false;
  17.                 M++;
  18.             }
  19.         }
  20.     } while (!ok);
  21.     if (n != 10) std::cout << "C = " << C << " M = " << M << "\n";
  22. }
  23.  
  24. void invertSort(int* mas, int n)
  25. {
  26.     int max_idx;
  27.     for (int i = 0; i < n - 1; i++)
  28.     {
  29.         max_idx = i;
  30.         for (int j = i + 1; j < n; j++)
  31.         {
  32.             if (mas[j] > mas[max_idx])
  33.             {
  34.                 max_idx = j;
  35.             }
  36.         }
  37.         std::swap(mas[max_idx], mas[i]);
  38.     }
  39. }
  40.  
  41. int main()
  42. {
  43.     const int n1 = 50000, n2 = 60000, n3 = 70000, n4 = 80000, n5 = 90000;
  44.     setlocale(0, "rus");
  45.     srand(time(0));
  46.     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];
  47.     std::cout << "Практическая работа №1 Сравнение простых алгоритмов сортировки массивов. Нестягин Никита. ИКБО-14-19\n";
  48.     std::cout << "Заполните тестовый массив:\n";
  49.     for (int i = 0; i < 10; i++)
  50.     {
  51.         std::cin >> mas[i];
  52.     }
  53.     std::cout << "Введённый массив:\n";
  54.     for (int i = 0; i < 10; i++)
  55.     {
  56.         std::cout << mas[i] << " ";
  57.     }
  58.     std::cout << "\n";
  59.     insertionSort(mas, 10);
  60.     std::cout << "Результат сортировки:\n";
  61.     for (int i = 0; i < 10; i++)
  62.     {
  63.         std::cout << mas[i] << " ";
  64.     }
  65.     std::cout << "\n";
  66.     //Заполнение массивов с помощью псевдослучайной генерации чисел
  67.     for (int i = 0; i < n1; i++)
  68.     {
  69.         mas1[i] = rand();
  70.     }
  71.     for (int i = 0; i < n2; i++)
  72.     {
  73.         mas2[i] = rand();
  74.     }
  75.     for (int i = 0; i < n3; i++)
  76.     {
  77.         mas3[i] = rand();
  78.     }
  79.     for (int i = 0; i < n4; i++)
  80.     {
  81.         mas4[i] = rand();
  82.     }
  83.     for (int i = 0; i < n5; i++)
  84.     {
  85.         mas5[i] = rand();
  86.     }
  87.     std::cout << "-------------------------\nn1 = 50 000\nСредний случай\n";
  88.     insertionSort(mas1, n1);
  89.     std::cout << "Наилучший случай\n";
  90.     insertionSort(mas1, n1);
  91.     invertSort(mas1, n1);
  92.     std::cout << "Наихудший случай\n";
  93.     insertionSort(mas1, n1);
  94.  
  95.     std::cout << "-------------------------\nn2 = 60 000\nСредний случай\n";
  96.     insertionSort(mas2, n2);
  97.     std::cout << "Наилучший случай\n";
  98.     insertionSort(mas2, n2);
  99.     invertSort(mas2, n2);
  100.     std::cout << "Наихудший случай\n";
  101.     insertionSort(mas2, n2);
  102.  
  103.     std::cout << "-------------------------\nn3 = 70 000\nСредний случай\n";
  104.     insertionSort(mas3, n3);
  105.     std::cout << "Наилучший случай\n";
  106.     insertionSort(mas3, n3);
  107.     invertSort(mas3, n3);
  108.     std::cout << "Наихудший случай\n";
  109.     insertionSort(mas3, n3);
  110.  
  111.     std::cout << "-------------------------\nn4 = 80 000\nСредний случай\n";
  112.     insertionSort(mas4, n4);
  113.     std::cout << "Наилучший случай\n";
  114.     insertionSort(mas4, n4);
  115.     invertSort(mas4, n4);
  116.     std::cout << "Наихудший случай\n";
  117.     insertionSort(mas4, n4);
  118.  
  119.     std::cout << "-------------------------\nn5 = 90 000\nСредний случай\n";
  120.     insertionSort(mas5, n5);
  121.     std::cout << "Наилучший случай\n";
  122.     insertionSort(mas5, n5);
  123.     invertSort(mas5, n5);
  124.     std::cout << "Наихудший случай\n";
  125.     insertionSort(mas5, n5);
  126.  
  127.     delete[] mas; delete[] mas1; delete[] mas2; delete[] mas3; delete[] mas4; delete[] mas5;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement