Maxim_Leo

Untitled

May 13th, 2022
20
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.81 KB | None | 0 0
  1. #include <iostream>
  2. #include<stack>
  3. #include <string>
  4. #include<ctime>
  5. #include<chrono>
  6. #include <ratio>
  7.  
  8. using namespace std;
  9.  
  10. void BubbleSort(int* a, int n) {
  11. int tmp, L = 0, R = n - 1;
  12. bool flag = false;
  13. while (R > 0) {
  14. int j = 0;
  15. while (j < R) {
  16. if (a[j] > a[j + 1]) {
  17. tmp = a[j];
  18. a[j] = a[j + 1];
  19. a[j + 1] = tmp;
  20. flag = true;
  21. }
  22. j++;
  23.  
  24. }
  25. if (flag == false) {
  26. break;
  27. }
  28. R--;
  29.  
  30. }
  31. }
  32.  
  33.  
  34. int LinearSearch(int* a, int n, int x) {
  35. chrono::high_resolution_clock::time_point t1 = chrono::high_resolution_clock::now();
  36. int i = 0;
  37. while (i < n && a[i] != x) { i++; }
  38. chrono::high_resolution_clock::time_point t2 = chrono::high_resolution_clock::now();
  39. chrono::duration<double> seconds1 = chrono::duration_cast<chrono::duration<double>>(t2 - t1);
  40. printf("|%-20s|%14d|%22d|%30d|%20.10f|\n", " Линейный поиск ", n,i,i, seconds1.count());
  41. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  42. if (i == n) return -1;
  43. return i;
  44. }
  45.  
  46. int BinarySearch(int* a,int n,int x) {
  47. chrono::high_resolution_clock::time_point t1 = chrono::high_resolution_clock::now();
  48. int L = 0, R = n - 1,m=0,i=0,k=0;
  49. bool flag = false;
  50. while (L < R&& flag != true) {
  51. m = (L + R) / 2;
  52. if (a[m] == x) flag = true;
  53. if (a[m] > x) R = m-1;
  54. else L = m+1;
  55. i += 2;
  56. k++;
  57. }
  58. chrono::high_resolution_clock::time_point t2 = chrono::high_resolution_clock::now();
  59. chrono::duration<double> seconds1 = chrono::duration_cast<chrono::duration<double>>(t2 - t1);
  60. printf("|%-20s|%14d|%22d|%30d|%20.10f|\n", " Бинарный поиск ", n, i,k, seconds1.count());
  61. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  62. return m;
  63. }
  64.  
  65. int BarrierSearch(int* a, int n, int x) {
  66. chrono::high_resolution_clock::time_point t1 = chrono::high_resolution_clock::now();
  67. int i = 0;
  68. a[n] = x;
  69. while (a[i] != x) i++;
  70. chrono::high_resolution_clock::time_point t2 = chrono::high_resolution_clock::now();
  71. chrono::duration<double> seconds1 = chrono::duration_cast<chrono::duration<double>>(t2 - t1);
  72. printf("|%-26s|%14d|%22d|%30d|%20.10f|\n", "Линейный поиск с барьером", n, i,i, seconds1.count());
  73. printf("|%-26s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  74. if(i==n) return -1;
  75. return i;
  76. }
  77.  
  78. int main()
  79. {
  80. setlocale(LC_ALL, "Russian");
  81.  
  82. int* a1 = new int[100];
  83. int* a2 = new int[100];
  84. int* a3 = new int[100];
  85. int* b1 = new int[500];
  86. int* b2 = new int[500];
  87. int* b3 = new int[500];
  88. int* c1 = new int[1000];
  89. int* c2 = new int[1000];
  90. int* c3 = new int[1000];
  91. int* d1 = new int[3000];
  92. int* d2 = new int[3000];
  93. int* d3 = new int[3000];
  94. int* e1 = new int[10000];
  95. int* e2 = new int[10000];
  96. int* e3 = new int[10000];
  97. for (int i = 0; i < 100; i++) {
  98. a1[i] = rand() % 1000 + 0;
  99. }
  100. for (int i = 0; i < 100; i++) {
  101. a2[i] = rand() % 1000 + 0;
  102. }
  103. for (int i = 0; i < 100; i++) {
  104. a3[i] = rand() % 1000 + 0;
  105. }
  106. for (int i = 0; i < 100; i++) {
  107. b1[i] = rand() % 1000 + 0;
  108. }
  109. for (int i = 0; i < 100; i++) {
  110. b2[i] = rand() % 1000 + 0;
  111. }
  112. for (int i = 0; i < 100; i++) {
  113. b3[i] = rand() % 1000 + 0;
  114. }
  115. for (int i = 0; i < 100; i++) {
  116. c1[i] = rand() % 1000 + 0;
  117. }
  118. for (int i = 0; i < 100; i++) {
  119. c2[i] = rand() % 1000 + 0;
  120. }
  121. for (int i = 0; i < 100; i++) {
  122. c3[i] = rand() % 1000 + 0;
  123. }
  124. for (int i = 0; i < 100; i++) {
  125. d1[i] = rand() % 1000 + 0;
  126. }
  127. for (int i = 0; i < 100; i++) {
  128. d2[i] = rand() % 1000 + 0;
  129. }
  130. for (int i = 0; i < 100; i++) {
  131. d3[i] = rand() % 1000 + 0;
  132. }
  133. for (int i = 0; i < 100; i++) {
  134. e1[i] = rand() % 1000 + 0;
  135. }
  136. for (int i = 0; i < 100; i++) {
  137. e2[i] = rand() % 1000 + 0;
  138. }
  139. for (int i = 0; i < 100; i++) {
  140. e3[i] = rand() % 1000 + 0;
  141. }
  142.  
  143. cout << "Задание 1:" << endl;
  144. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------", "--------------", "----------------------","------------------------------", "--------------------");
  145. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", " Метод ", "Размер массива", "Количество сравнений"," Количество повторений цикла ", " Скорость ");
  146. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  147.  
  148. LinearSearch(a1, 100, 12);
  149. LinearSearch(a2, 100, 12);
  150. LinearSearch(a3, 100, 12);
  151. LinearSearch(b1, 500, 12);
  152. LinearSearch(b2, 500, 12);
  153. LinearSearch(b3, 500, 12);
  154. LinearSearch(c1, 1000, 12);
  155. LinearSearch(c2, 1000, 12);
  156. LinearSearch(c3, 1000, 12);
  157. LinearSearch(d1, 3000, 12);
  158. LinearSearch(d2, 3000, 12);
  159. LinearSearch(d3, 3000, 12);
  160. LinearSearch(e1, 10000, 12);
  161. LinearSearch(e2, 10000, 12);
  162. LinearSearch(e3, 10000, 12);
  163.  
  164. cout << endl;
  165.  
  166. cout << "Задание 3: " << endl;
  167.  
  168. printf("|%-26s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  169. printf("|%-26s|%-14s|%-22s|%-30s|%-20s|\n", " Метод ", "Размер массива", "Количество сравнений", " Количество повторений цикла ", " Скорость ");
  170. printf("|%-26s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  171.  
  172.  
  173. BarrierSearch(a1, 100, 12);
  174. BarrierSearch(a2, 100, 12);
  175. BarrierSearch(a3, 100, 12);
  176. BarrierSearch(b1, 500, 12);
  177. BarrierSearch(b2, 500, 12);
  178. BarrierSearch(b3, 500, 12);
  179. BarrierSearch(c1, 1000, 12);
  180. BarrierSearch(c2, 1000, 12);
  181. BarrierSearch(c3, 1000, 12);
  182. BarrierSearch(d1, 3000, 12);
  183. BarrierSearch(d2, 3000, 12);
  184. BarrierSearch(d3, 3000, 12);
  185. BarrierSearch(e1, 10000, 12);
  186. BarrierSearch(e2, 10000, 12);
  187. BarrierSearch(e3, 10000, 12);
  188.  
  189. cout << endl;
  190.  
  191. cout << "Задание 2"<<endl;
  192.  
  193. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  194. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", " Метод ", "Размер массива", "Количество сравнений", " Количество повторений цикла ", " Скорость ");
  195. printf("|%-20s|%-14s|%-22s|%-30s|%-20s|\n", "--------------------", "--------------", "----------------------", "------------------------------", "--------------------");
  196.  
  197. BubbleSort(a1, 100);
  198. BubbleSort(a2, 100);
  199. BubbleSort(a3, 100);
  200. BubbleSort(b1, 500);
  201. BubbleSort(b2, 500);
  202. BubbleSort(b3, 500);
  203. BubbleSort(c1, 1000);
  204. BubbleSort(c2, 1000);
  205. BubbleSort(c3, 1000);
  206. BubbleSort(d1, 3000);
  207. BubbleSort(d2, 3000);
  208. BubbleSort(d3, 3000);
  209. BubbleSort(e1, 10000);
  210. BubbleSort(e2, 10000);
  211. BubbleSort(e3, 10000);
  212.  
  213.  
  214. LinearSearch(a1, 100, 12);
  215. BinarySearch(a1, 100, 12);
  216. LinearSearch(a2, 100, 12);
  217. BinarySearch(a2, 100, 12);
  218. LinearSearch(a3, 100, 12);
  219. BinarySearch(a3, 100, 12);
  220. LinearSearch(b1, 500, 12);
  221. BinarySearch(b1, 500, 12);
  222. LinearSearch(b2, 500, 12);
  223. BinarySearch(b2, 500, 12);
  224. LinearSearch(b3, 500, 12);
  225. BinarySearch(b3, 500, 12);
  226. LinearSearch(c1, 1000, 12);
  227. BinarySearch(c1, 1000, 12);
  228. LinearSearch(c2, 1000, 12);
  229. BinarySearch(c2, 1000, 12);
  230. LinearSearch(c3, 1000, 12);
  231. BinarySearch(c3, 1000, 12);
  232. LinearSearch(d1, 3000, 12);
  233. BinarySearch(d1, 3000, 12);
  234. LinearSearch(d2, 3000, 12);
  235. BinarySearch(d2, 3000, 12);
  236. LinearSearch(d3, 3000, 12);
  237. BinarySearch(d3, 3000, 12);
  238. LinearSearch(e1, 10000, 12);
  239. BinarySearch(e1, 10000, 12);
  240. LinearSearch(e2, 10000, 12);
  241. BinarySearch(e2, 10000, 12);
  242. LinearSearch(e3, 10000, 12);
  243. BinarySearch(e3, 10000, 12);
  244.  
  245.  
  246.  
  247. }
  248.  
Advertisement
Add Comment
Please, Sign In to add comment