Advertisement
bruimafia

Untitled

May 13th, 2021
704
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.68 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <fstream>
  4. #include <locale>
  5. #include <stdio.h> //определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода
  6. #include <time.h>
  7. using namespace std;
  8.  
  9. void input(fstream& f, int Arr[], int sizee) {
  10.  
  11. for (int i = 0; i < sizee; i++) {
  12.     Arr[i] = -100 + rand() % 201;
  13.     f << Arr[i] << " ";
  14. }
  15.     f << endl << endl;
  16. }
  17.  
  18. void output(fstream& f1, int Arr[], int sizee) {
  19.     for (int i = 0; i < sizee; i++)
  20.            f1 >> Arr[i];
  21. }
  22.  
  23. void choice(int Arr[], int sizee) {
  24.     for (int start = 0; start < sizee - 1; start++) {
  25.         int max = start;
  26.         for (int now = start + 1; now < sizee; now++) {
  27.             if (Arr[now] > Arr[max])
  28.                 max = now;
  29.         }
  30.         swap(Arr[start], Arr[max]);
  31.     }
  32. }
  33.  
  34. double choice_time(int Arr[], int sizee) {
  35.     clock_t start1 = clock();
  36.     choice(Arr, sizee);
  37.     clock_t end1 = clock();
  38.     return ((double)end1 - start1) / (double)CLOCKS_PER_SEC;
  39. }
  40.  
  41. double choice_time_ten(fstream& f_ch, int Arr[], int sizee) {
  42.     double time1 = 0.0;
  43.     for (int i = 0; i < 10; i++) {
  44.     time1 += choice_time(Arr, sizee);
  45.     }
  46.    
  47.     for (int i = 0; i < sizee; i++)
  48.     f_ch << Arr[i] << " ";
  49.     f_ch << endl << endl;
  50.    
  51.    
  52.     return time1 / (double)10;
  53. }
  54.  
  55. double sredn(int Arr[], int sizee){
  56.     double sum = 0;
  57.     for (int i = 0; i < sizee; i++)
  58.             sum += Arr[i];
  59.     return sum/sizee;
  60. }
  61.  
  62. void fast(int Arr[], int sizee){
  63.     int t, left = 0, right = 0;
  64.     double x;
  65.     x = sredn(Arr, sizee);
  66.    
  67.     int i = left;
  68.     int j = right;
  69.    
  70.     while (i <= j) {
  71.         while (Arr[i] < x)
  72.             i++;
  73.         while (Arr[j] > x)
  74.             j--;
  75.         if (i <= j) {
  76.             t = Arr[i];
  77.             Arr[i] = Arr[j];
  78.             Arr[j] = t;
  79.             i++;
  80.             j--;
  81.         }
  82.     }
  83.     if (i < right)
  84.         fast(Arr, sizee);
  85.     if (left < j)
  86.         fast(Arr, sizee);
  87. }
  88.  
  89. double fast_time(int Arr[], int sizee) {
  90.     clock_t start2 = clock();
  91.     fast(Arr, sizee);
  92.     clock_t end2 = clock();
  93.     return ((double)end2 - start2) / (double)CLOCKS_PER_SEC;
  94. }
  95.  
  96. double fast_time_ten(fstream& f_fs, int Arr[], int sizee) {
  97.     double time2 = 0.0;
  98.     for (int i = 0; i < 10; i++) {
  99.         time2 += fast_time(Arr, sizee);
  100.     }
  101.     for (int i = 0; i < sizee; i++)
  102.     f_fs << Arr[i] << " ";
  103.     f_fs << endl << endl;
  104.    
  105.     return time2 / (double)10;
  106. }
  107.  
  108. void shell(int Arr[],int sizee){
  109.     int i, j, n = 0, d,count;
  110.     d = n;
  111.     d = d/2;
  112.     while(d > 0) {
  113.         for (i = 0; i < n - d; i++) {
  114.             j = i;
  115.             while (j >= 0 && Arr[j] > Arr[j + d]) {
  116.                 count = Arr[j];
  117.                 Arr[j] = Arr[j + d];
  118.                 Arr[j + d] = count;
  119.                 j--;
  120.             }
  121.         }
  122.         d = d/2;
  123.     }
  124. }
  125.  
  126. double shell_time(int Arr[], int sizee) {
  127.     clock_t start3 = clock();
  128.     shell(Arr, sizee);
  129.     clock_t end3 = clock();
  130.     return ((double)end3 - start3) / (double)CLOCKS_PER_SEC;
  131. }
  132.  
  133. double shell_time_ten(fstream& f_sh, int Arr[], int sizee) {
  134.     double time3 = 0.0;
  135.     for (int i = 0; i < 10; i++) {
  136.         time3 += shell_time(Arr, sizee);
  137.     }
  138.     for (int i = 0; i < sizee; i++)
  139.     f_sh << Arr[i] << " ";
  140.     f_sh << endl << endl;
  141.    
  142.     return time3 / (double)10;
  143. }
  144.  
  145. int main() {
  146.     setlocale(0, "");
  147.    
  148.     fstream f_ch("choice.txt", ios::out);
  149.     fstream f_fs("fast.txt", ios::out);
  150.     fstream f_sh("shell.txt", ios::out);
  151.  
  152.     int size1 = 100, size2 = 1000, size3 = 5000, size4 = 10000, size5 = 50000, size6 = 100000;
  153.     int randArr1[size1], randArr2[size2], randArr3[size3], randArr4[size4], randArr5[size5], randArr6[size6];
  154.     int Arr1[size1], Arr2[size2], Arr3[size3], Arr4[size4], Arr5[size5], Arr6[size6];
  155.  
  156.     fstream f("result.txt", ios::out);
  157.    
  158.     input(f, randArr1, size1);
  159.     input(f, randArr2, size2);
  160.     input(f, randArr3, size3);
  161.     input(f, randArr4, size4);
  162.     input(f, randArr5, size5);
  163.     input(f, randArr6, size6);
  164.    
  165.     f << endl << endl;
  166.  
  167.     fstream f1("result.txt");
  168.     if (!f.is_open()) // если файл не открыт
  169.         cout << "Файл не может быть открыт! " << endl; // сообщить об этом
  170.     else{
  171.         cout << "Файл открыт! " << endl;;
  172.     }
  173.  
  174.     output(f1, Arr1, size1);
  175.     output(f1, Arr2, size2);
  176.     output(f1, Arr3, size3);
  177.     output(f1, Arr4, size4);
  178.     output(f1, Arr5, size5);
  179.     output(f1, Arr6, size6);
  180.  
  181.     cout << endl;
  182.    
  183.     cout << "Массив №1 (100) || алгоритм Выбора || Среднее время = " << choice_time_ten(f_ch, Arr1, size1) << endl;
  184.     cout << "Массив №1 (100) || алгоритм Быстрой сортировки || Среднее время = " << fast_time_ten(f_fs, Arr1, size1) << endl;
  185.     cout << "Массив №1 (100) || алгоритм Шелла || Среднее время = " << shell_time_ten(f_sh, Arr1, size1) << endl << endl;
  186.    
  187.    
  188.     cout << "Массив №2 (1000) || алгоритм Выбора || Среднее время = " << choice_time_ten(f_ch, Arr2, size2) << endl;
  189.     cout << "Массив №2 (1000) || алгоритм Быстрой сортировки || Среднее время = " << fast_time_ten(f_fs, Arr2, size2) << endl;
  190.     cout << "Массив №2 (1000) || алгоритм Шелла || Среднее время = " << shell_time_ten(f_sh, Arr2, size2) << endl << endl;
  191.    
  192.    
  193.     cout << "Массив №3 (5000) || алгоритм Выбора || Среднее время = " << choice_time_ten(f_ch, Arr3, size3) << endl;
  194.     cout << "Массив №3 (5000) || алгоритм Быстрой сортировки || Среднее время = " << fast_time_ten(f_fs, Arr3, size3) << endl;
  195.     cout << "Массив №3 (5000) || алгоритм Шелла || Среднее время = " << shell_time_ten(f_sh, Arr3, size3) << endl << endl;
  196.    
  197.    
  198.     cout << "Массив №4 (10000) || алгоритм Выбора || Среднее время = " << choice_time_ten(f_ch, Arr4, size4) << endl;
  199.     cout << "Массив №4 (10000) || алгоритм Быстрой сортировки || Среднее время = " << fast_time_ten(f_fs, Arr4, size4) << endl;
  200.     cout << "Массив №4 (10000) || алгоритм Шелла || Среднее время = " << shell_time_ten(f_sh, Arr4, size4) << endl << endl;
  201.    
  202.    
  203.     cout << "Массив №5 (50000) || алгоритм Выбора || Среднее время = " << choice_time_ten(f_ch, Arr5, size5) << endl;
  204.     cout << "Массив №5 (50000) || алгоритм Быстрой сортировки || Среднее время = " << fast_time_ten(f_fs, Arr5, size5) << endl;
  205.     cout << "Массив №5 (50000) || алгоритм Шелла || Среднее время = " << shell_time_ten(f_sh, Arr5, size5) << endl << endl;
  206.    
  207.    
  208.     cout << "Массив №6 (100000) || алгоритм Выбора || Среднее время = " << choice_time_ten(f_ch, Arr6, size6) << endl;
  209.     cout << "Массив №6 (100000) || алгоритм Быстрой сортировки || Среднее время = " << fast_time_ten(f_fs, Arr6, size6) << endl;
  210.     cout << "Массив №6 (100000) || алгоритм Шелла || Среднее время = " << shell_time_ten(f_sh, Arr6, size6) << endl;
  211.  
  212.     f.close();
  213.     f1.close();
  214.     f_ch.close();
  215.     f_fs.close();
  216.     f_sh.close();
  217.     return 0;
  218. }
  219.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement