Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1. #include <iostream>
  2. #include "прототипы.h"
  3. #include <time.h>
  4. #include <stdlib.h> //srand, rand
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9. setlocale(LC_ALL, "rus");
  10. int n = 5;
  11. int srav, perest, i;
  12. int* a = new int[n];
  13. int* b = new int[n];
  14.  
  15. cout << "длина массива = " << n << endl;
  16.  
  17. cout << "неотсортированный массив: " << endl;
  18. for (i = 0; i < n; i++)
  19. {
  20. *(a + i) = iRandom(-100, 100);
  21. *(b + i) = *(a + i);
  22. cout << *(a + i) << " ";
  23. }
  24. cout << endl;
  25.  
  26.  
  27.  
  28. cout << "отсортированный массив:" << endl;
  29. puzirekvozrast(a, n, &srav, &perest);
  30. cout << "пузырек возрастание " << endl;
  31. cout << "сравнения= " << srav << endl;
  32. cout << "перестановки= " << perest << endl;
  33.  
  34. for (i = 0; i < n; i++)
  35. {
  36. cout << *(a + i) << " ";
  37. }
  38. cout << endl;
  39. cout << endl;
  40.  
  41. puzirekvozrast(a, n, &srav, &perest);
  42. cout << "пузырек возрастание" << endl;
  43. cout << "сравнения= " << srav << endl;
  44. cout << "перестановки= " << perest << endl;
  45.  
  46. for (i = 0; i < n; i++)
  47. {
  48. cout << *(a + i) << " ";
  49. }
  50. cout << endl;
  51. cout << endl;
  52.  
  53. cout << "отсортированный массив:" << endl;
  54. puzirekubiv(a, n, &srav, &perest);
  55. cout << "пузырек убывание" << endl;
  56. cout << "сравнения= " << srav << endl;
  57. cout << "перестановки= " << perest << endl;
  58.  
  59. for (i = 0; i < n; i++)
  60. {
  61. cout << *(a + i) << " ";
  62. }
  63. cout << endl;
  64.  
  65. puzirekubiv(a, n, &srav, &perest);
  66. cout << "пузырек убывание" << endl;
  67. cout << "сравнения= " << srav << endl;
  68. cout << "перестановки= " << perest << endl;
  69.  
  70. for (i = 0; i < n; i++)
  71. {
  72. cout << *(a + i) << " ";
  73. }
  74. cout << endl;
  75. cout << endl;
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82. cout << "отсортированный массив:" << endl;
  83. minmaxvozrast(b, n, &srav, &perest);
  84. cout << "минмакс возрастание" << endl;
  85. cout << "сранения= " << srav << endl;
  86. cout << "перестановки= " << perest << endl;
  87.  
  88. for (i = 0; i < n; i++)
  89. {
  90. cout << *(b + i) << " ";
  91. }
  92. cout << endl;
  93. cout << endl;
  94. minmaxvozrast(b, n, &srav, &perest);
  95. cout << "минмакс возрастание " << endl;
  96. cout << "сравнения= " << srav << endl;
  97. cout << "перестановки= " << perest << endl;
  98.  
  99. for (i = 0; i < n; i++)
  100. {
  101. cout << *(b + i) << " ";
  102. }
  103. cout << endl;
  104. cout << endl;
  105.  
  106.  
  107.  
  108. cout << "отсортированный массив:" << endl;
  109. minmaxubiv(b, n, &srav, &perest);
  110. cout << "минмакс убывание" << endl;
  111. cout << "сравнения= " << srav << endl;
  112. cout << "перестановки= " << perest << endl;
  113. for (i = 0; i < n; i++)
  114. {
  115. cout << *(b + i) << " ";
  116. }
  117. cout << endl;
  118. cout << endl;
  119. minmaxubiv(b, n, &srav, &perest);
  120. cout << "минмакс убывание" << endl;
  121. cout << "сравнения= " << srav << endl;
  122. cout << "перестановки= " << perest << endl;
  123. for (i = 0; i < n; i++)
  124. {
  125. cout << *(b + i) << " ";
  126. }
  127. cout << endl;
  128. cout << endl;
  129.  
  130. n = 5;
  131. for (int j = 1; j <= 3; j++)
  132. {
  133. a = new int[n];
  134. for (i = 0; i < n; i++)
  135. * (a + i) = iRandom(-99, 99);
  136.  
  137. cout << "n=" << n << endl;
  138. puzirekvozrast(a, n, &srav, &perest);
  139. cout << "пузырек сравнения= " << srav;
  140. cout << " перестановки= " << perest << endl;
  141.  
  142. for (i = 0; i < n; i++)
  143. * (a + i) = iRandom(-99, 99);
  144.  
  145. minmaxvozrast(a, n, &srav, &perest);
  146. cout << "минмакс сравнения " << srav;
  147. cout << " перестановки= " << perest << endl;
  148. n = n * 10;
  149. }
  150.  
  151.  
  152. delete[]a; delete []b;
  153. system("pause");
  154.  
  155. return 0;
  156.  
  157. }
  158.  
  159.  
  160.  
  161.  
  162. #include <iostream>
  163. #include <time.h>
  164. #include <stdlib.h> //srand, rand
  165. using namespace std;
  166.  
  167. int iRandom(int a, int b) // целое из [a,b]
  168. {
  169. return a + (b - a + 1) * rand() / RAND_MAX;
  170. }
  171.  
  172. void puzirekvozrast(int* a, int n, int* srav, int* perest)
  173. {
  174. int t, i, j;
  175. bool k;
  176. *perest = 0;
  177. *srav = 0;
  178.  
  179.  
  180. for (i = 0; i < n - 1; i++)
  181. {
  182. k = true;
  183. for (j = 0; j < n - i - 1; j++)
  184. {
  185.  
  186. *srav = *srav + 1;
  187. if (*(a + j) > * (a + j + 1))
  188. {
  189. t = *(a + j);
  190. *(a + j) = *(a + j + 1);
  191. *(a + j + 1) = t;
  192. *perest = *perest + 1;
  193. k = false;
  194. }
  195.  
  196. }
  197. if (k==true) return;
  198. }
  199. }
  200.  
  201. void puzirekubiv(int *a, int n, int *srav, int *perest)
  202.  
  203. {
  204. int t, i, j;
  205. bool k ;
  206. *perest = 0;
  207. *srav = 0;
  208.  
  209.  
  210. for (i = 0; i < n - 1; i++)
  211. {
  212. k = true;
  213. for (j = 0; j < n - i - 1; j++)
  214. {
  215.  
  216. *srav = *srav + 1;
  217. if (*(a + j) < *(a + j + 1))
  218. {
  219. t = *(a + j);
  220. *(a + j) = *(a + j + 1);
  221. *(a + j + 1) = t;
  222. *perest = *perest + 1;
  223. k = false;
  224.  
  225. }
  226.  
  227. }
  228. if (k==true)
  229. return;
  230.  
  231. }
  232. }
  233. void minmaxvozrast(int* a, int n, int* srav, int* perest)
  234. {
  235. int t, i, j, min;
  236. *perest = 0;
  237. *srav = 0;
  238.  
  239. for (i = 0; i < n - 1; i++)
  240. {
  241. min = i;
  242. for (j = i + 1; j < n; j++)
  243. {
  244. *srav = *srav + 1;
  245. if (*(a + j) < *(a + min))
  246. {
  247.  
  248. min = j;
  249. }
  250. }
  251. if (min!= i)
  252. {
  253. t = *(a + i);
  254. *(a + i) = *(a + min);
  255. *(a + min) = t;
  256. *perest = *perest + 1;
  257. }
  258.  
  259.  
  260. }
  261. }
  262. void minmaxubiv(int* a, int n, int* srav, int* perest)
  263. {
  264. int t, i, j, max;
  265. *perest = 0;
  266. *srav = 0;
  267.  
  268. for (i = 0; i < n - 1; i++)
  269. {
  270. max = i;
  271. for (j = i + 1; j < n; j++)
  272. {
  273. *srav = *srav + 1;
  274. if (*(a + j) > * (a + max))
  275. {
  276.  
  277. max = j;
  278. }
  279. }
  280. if (max != i) {
  281. t = *(a + i);
  282. *(a + i) = *(a + max);
  283. *(a + max) = t;
  284. *perest = *perest + 1;
  285. }
  286.  
  287. }
  288. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement