fork download
  1. #include "cmath"
  2. #include <chrono>
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <vector>
  6. #include <ctime>
  7. #include <cstdlib>
  8.  
  9. using namespace std::chrono;
  10.  
  11. int RandomNumber2() { return (std::rand() % 100); }
  12. void FillVector(std::vector<int>& a) {
  13. std::srand(unsigned(std::time(0)));
  14. std::generate(a.begin(), a.end(), RandomNumber2);
  15. std::cout << "\n\nVector: ";
  16. for (std::vector<int>::iterator it = a.begin(); it != a.end(); it++) std::cout << *it << " ";
  17. }
  18.  
  19. void CocktailSort(std::vector<int>& a, int n) {
  20. bool flag = true;
  21. int start = 0, end = n-1;
  22. while(flag){
  23. flag = false;
  24. for(int i = start; i<end; i++){
  25. if(a[i] > a[i+1]){
  26. std::swap(a[i], a[i+1]);
  27. flag = true;
  28. }
  29. }
  30. if(!flag){
  31. break;
  32. }
  33. flag = false;
  34. end--;
  35. for(int i = end - 1; i >= start; i--){
  36. if(a[i] > a[i+1]){
  37. std::swap(a[i], a[i+1]);
  38. flag = true;
  39. }
  40. }
  41. start++;
  42. }
  43. }
  44.  
  45. double measureTime(std::vector<int>& a, int n) {
  46. steady_clock::time_point t1 = steady_clock::now();
  47. CocktailSort(a, n);
  48. steady_clock::time_point t2 = steady_clock::now();
  49. duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
  50. double mTime = time_span.count();
  51. std::cout << mTime << std::endl;
  52. return mTime;
  53. }
  54.  
  55.  
  56. void Experiment(std::vector<int> &a, int n) {
  57. FillVector(a);
  58. CocktailSort(a, n);
  59. std::cout << "\n\na. Sorted data: ";
  60. for (int i{ 0 }; i < n; i++) std::cout << a[i] << ' ';
  61.  
  62. double* times = new double[1000];
  63.  
  64. for (int i=100; i < 1000; i += 100) {
  65. std::cout << "\n[" << i << "]" << " ";
  66. for (int j{1}; j < 10; j+=1) {
  67. times[j] = measureTime(a, i);
  68. }
  69. }
  70. }
  71.  
  72. int main() {
  73. int n{1000};
  74. std::vector<int> a(n);
  75. Experiment(a, n);
  76.  
  77. return 0;
  78. }
Success #stdin #stdout 0.01s 5512KB
stdin
Standard input is empty
stdout

Vector: 55 89 7 9 73 71 8 14 61 25 6 54 67 79 67 64 53 6 57 73 92 65 93 76 34 41 67 47 17 80 66 24 21 25 86 46 96 94 60 57 19 19 64 39 50 83 3 3 41 13 28 85 30 21 61 64 15 81 11 84 61 29 9 83 54 47 29 51 41 42 60 12 13 24 51 63 59 7 66 0 20 95 86 50 68 99 66 35 80 29 20 94 58 81 77 12 28 58 63 21 52 24 33 65 0 85 28 60 44 47 12 64 94 98 66 62 98 32 98 30 13 70 24 71 3 53 83 31 64 99 52 16 75 85 34 27 22 14 39 18 61 52 82 55 2 0 70 0 84 20 83 97 42 7 68 45 13 4 28 77 55 80 45 30 17 79 9 92 94 49 10 7 1 45 63 3 97 85 56 82 5 91 31 47 98 52 92 63 8 20 40 63 52 86 45 21 17 54 65 11 3 28 19 56 25 34 12 22 19 68 56 24 59 88 23 9 92 67 73 0 39 65 63 43 3 8 16 21 14 82 84 18 62 55 26 87 89 38 9 60 6 18 36 17 58 59 79 50 78 4 2 17 69 65 60 25 25 77 46 91 11 82 9 73 38 88 12 79 26 21 92 33 91 28 2 49 88 81 51 18 37 53 36 7 70 96 32 47 25 30 39 36 64 0 61 54 88 73 86 15 47 78 0 38 6 54 40 46 88 43 65 25 97 1 32 19 49 16 67 75 98 6 63 15 58 77 69 47 50 55 14 49 33 66 40 40 20 80 38 8 75 3 34 72 56 18 44 6 87 11 33 37 69 48 52 27 25 22 26 28 29 92 77 15 58 17 7 79 49 45 39 77 49 73 49 5 44 93 63 31 56 96 20 77 97 73 5 22 47 83 2 28 76 80 43 86 49 50 65 51 96 5 28 97 30 29 54 26 75 18 9 83 66 30 61 15 3 18 38 2 1 40 30 29 72 74 16 74 24 33 77 72 90 5 69 73 86 24 99 13 94 9 97 12 39 58 28 94 76 18 96 29 58 26 11 83 0 79 57 77 12 34 49 55 91 19 28 29 95 79 43 89 88 40 53 79 50 81 73 26 99 69 7 10 96 18 93 48 49 2 25 62 88 27 69 31 46 97 60 93 76 3 34 17 43 87 96 93 69 70 71 20 39 31 30 87 1 75 88 51 29 13 65 69 40 34 0 38 83 61 31 11 16 17 28 12 5 77 57 26 47 81 46 38 12 29 78 65 56 66 16 38 31 33 7 72 67 8 62 2 21 46 14 89 63 94 1 20 71 11 46 70 92 45 9 56 26 39 21 82 5 38 20 36 23 28 60 91 88 75 45 61 21 59 2 36 6 56 57 77 67 3 0 59 0 9 67 26 0 88 61 5 78 81 93 2 61 54 45 1 29 90 14 2 2 17 38 8 73 95 37 40 51 37 51 51 98 18 30 98 58 91 55 37 24 49 39 38 55 84 91 36 26 6 38 28 75 28 36 48 76 74 40 27 63 43 30 62 13 12 60 71 55 16 8 80 17 99 18 72 35 61 8 62 67 98 90 42 78 79 42 54 5 82 33 68 25 64 82 38 28 95 62 84 63 22 64 80 22 34 52 57 95 12 71 15 62 14 57 40 93 0 95 50 34 28 70 12 44 53 2 73 48 64 9 11 87 73 43 61 59 47 70 6 59 42 21 73 8 31 13 1 83 60 3 17 41 73 81 85 78 84 10 26 0 19 89 39 44 84 0 55 31 71 62 42 65 35 15 73 66 81 26 49 41 29 19 34 54 0 72 33 36 34 11 37 54 53 28 50 37 29 58 69 52 20 11 17 55 79 42 74 60 68 75 53 49 94 40 3 47 12 88 83 46 0 72 52 5 1 55 42 82 13 63 34 85 27 3 92 6 45 66 18 13 42 23 14 88 63 17 35 75 58 71 22 58 43 26 63 96 81 57 78 94 21 64 79 0 67 72 6 64 90 24 29 84 99 43 73 63 13 8 38 71 79 12 81 75 91 96 23 72 53 54 19 26 18 50 26 38 74 84 2 17 60 32 1 60 27 74 23 40 35 13 11 14 26 92 41 69 88 65 41 94 19 12 72 89 15 99 79 41 35 82 58 96 66 60 56 93 34 79 86 69 44 49 36 70 94 29 39 34 46 33 28 65 97 53 7 12 4 86 54 39 20 64 35 86 24 43 32 11 74 70 32 19 19 68 89 13 50 81 48 96 66 28 14 15 81 21 80 85 59 34 77 80 50 12 18 

a. Sorted data: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 5 5 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13 13 13 13 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 18 18 18 18 18 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19 19 19 19 20 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21 21 21 22 22 22 22 22 22 22 23 23 23 23 23 24 24 24 24 24 24 24 24 24 24 25 25 25 25 25 25 25 25 25 25 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 26 27 27 27 27 27 27 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 29 29 29 29 29 29 29 29 29 29 29 29 29 29 29 30 30 30 30 30 30 30 30 30 30 31 31 31 31 31 31 31 31 31 32 32 32 32 32 32 33 33 33 33 33 33 33 33 33 34 34 34 34 34 34 34 34 34 34 34 34 34 34 34 35 35 35 35 35 35 35 36 36 36 36 36 36 36 36 36 37 37 37 37 37 37 37 38 38 38 38 38 38 38 38 38 38 38 38 38 38 38 39 39 39 39 39 39 39 39 39 39 39 39 40 40 40 40 40 40 40 40 40 40 40 40 41 41 41 41 41 41 41 41 42 42 42 42 42 42 42 42 42 43 43 43 43 43 43 43 43 43 43 44 44 44 44 44 44 45 45 45 45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 47 47 47 47 47 47 47 47 47 47 47 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 49 49 50 50 50 50 50 50 50 50 50 50 50 51 51 51 51 51 51 51 51 52 52 52 52 52 52 52 52 52 53 53 53 53 53 53 53 53 53 54 54 54 54 54 54 54 54 54 54 54 54 55 55 55 55 55 55 55 55 55 55 55 55 56 56 56 56 56 56 56 56 56 57 57 57 57 57 57 57 57 58 58 58 58 58 58 58 58 58 58 58 58 59 59 59 59 59 59 59 59 60 60 60 60 60 60 60 60 60 60 60 60 60 61 61 61 61 61 61 61 61 61 61 61 61 62 62 62 62 62 62 62 62 62 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 64 64 64 64 64 64 64 64 64 64 64 64 65 65 65 65 65 65 65 65 65 65 65 65 66 66 66 66 66 66 66 66 66 66 66 67 67 67 67 67 67 67 67 67 67 68 68 68 68 68 68 69 69 69 69 69 69 69 69 69 69 69 70 70 70 70 70 70 70 70 70 71 71 71 71 71 71 71 71 71 72 72 72 72 72 72 72 72 72 72 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 73 74 74 74 74 74 74 74 75 75 75 75 75 75 75 75 75 75 76 76 76 76 76 77 77 77 77 77 77 77 77 77 77 77 77 78 78 78 78 78 78 78 79 79 79 79 79 79 79 79 79 79 79 79 79 79 80 80 80 80 80 80 80 80 80 81 81 81 81 81 81 81 81 81 81 81 81 82 82 82 82 82 82 82 82 82 83 83 83 83 83 83 83 83 83 83 84 84 84 84 84 84 84 84 84 85 85 85 85 85 85 85 86 86 86 86 86 86 86 86 86 87 87 87 87 87 88 88 88 88 88 88 88 88 88 88 88 88 88 89 89 89 89 89 89 89 90 90 90 90 91 91 91 91 91 91 91 91 92 92 92 92 92 92 92 92 92 93 93 93 93 93 93 93 93 94 94 94 94 94 94 94 94 94 94 94 95 95 95 95 95 95 96 96 96 96 96 96 96 96 96 96 96 97 97 97 97 97 97 97 97 98 98 98 98 98 98 98 98 99 99 99 99 99 99 99 
[100] 2.66e-07
1.84e-07
1.51e-07
1.44e-07
1.51e-07
1.57e-07
1.49e-07
1.52e-07
1.45e-07

[200] 2.65e-07
2.58e-07
2.54e-07
2.54e-07
2.52e-07
2.55e-07
2.51e-07
2.56e-07
2.51e-07

[300] 3.62e-07
3.51e-07
3.57e-07
3.54e-07
3.48e-07
3.47e-07
6.204e-06
3.47e-07
3.52e-07

[400] 4.52e-07
4.55e-07
4.55e-07
4.53e-07
4.54e-07
4.55e-07
4.55e-07
4.55e-07
4.56e-07

[500] 5.57e-07
5.58e-07
5.54e-07
5.57e-07
5.56e-07
5.55e-07
5.55e-07
5.54e-07
5.52e-07

[600] 6.55e-07
6.54e-07
6.48e-07
6.49e-07
6.49e-07
6.51e-07
6.53e-07
6.47e-07
6.5e-07

[700] 7.49e-07
7.55e-07
7.5e-07
7.47e-07
7.51e-07
7.47e-07
7.44e-07
7.44e-07
7.46e-07

[800] 8.53e-07
8.53e-07
8.47e-07
8.5e-07
8.5e-07
8.5e-07
8.47e-07
8.47e-07
8.5e-07

[900] 9.49e-07
9.5e-07
9.44e-07
9.44e-07
9.44e-07
9.46e-07
9.47e-07
9.48e-07
9.44e-07