Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include"windows.h"
  4. #include"locale.h"
  5. #include "dos.h"
  6. #include <ctime>
  7. using namespace std;
  8.  
  9. void sort1();//пузырьковая
  10. void sort2();//обменная
  11. void sort3();//вставки
  12. void show(int a[], int n, int pos, int elem);
  13.  
  14. int main()
  15. {
  16. setlocale(LC_ALL, "");
  17. int input;
  18. printf("Методы сортировки:\n ");
  19. printf("1.Пузырьковая сортировка\n ");
  20. printf("2.Сортировка выбором\n ");
  21. printf("3.Сортировка вставки\n ");
  22. scanf_s("%d", &input);
  23. switch (input) {
  24.  
  25. case 1:
  26. sort1();
  27. break;
  28. case 2:
  29. sort2();
  30. break;
  31. case 3:
  32. sort3();
  33. break;
  34.  
  35. }
  36. return 0;
  37. }
  38.  
  39. void show(int a[], int n, int pos, int elem)
  40. {
  41.  
  42. system("cls");
  43. printf("\n");
  44. HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  45. for (int i = 0; i < n; i++)
  46. if (i == elem)
  47. {
  48. SetConsoleTextAttribute(hConsole, (WORD)((13 << 4) | 15));
  49. printf("\t%i", a[elem]);
  50. SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 14));
  51. }
  52. else if (i == pos)
  53. {
  54. SetConsoleTextAttribute(hConsole, (WORD)((13 << 4) | 15));
  55. printf("\t%i", a[pos]);
  56. SetConsoleTextAttribute(hConsole, (WORD)((0 << 4) | 14));
  57. }
  58. else
  59. printf("\t%i", a[i]);
  60. printf("\n\n");
  61. Sleep(300);
  62. }
  63.  
  64. void sort1()
  65. {
  66. printf("Введите количество элементов: ");
  67. int n;
  68. scanf_s("%i", &n);
  69. int* a = new int[n];
  70. srand(time(0));
  71. for (int i = 0; i < n; i++)
  72. a[i] = rand() % 101 - 50;
  73. for (int i = 1; i < n; i++)
  74. {
  75. int flag = 1;
  76.  
  77. for (int j = 0; j < n - i; j++)
  78. {
  79. show(a, n, j, j + 1);
  80. if (a[j] > a[j + 1])
  81. {
  82. swap(a[j], a[j + 1]);
  83. show(a, n, j, j + 1);
  84. flag = 0;
  85.  
  86. }
  87.  
  88. }
  89. if (flag == 1)
  90. break;
  91. }
  92. show(a, n, -1, -1);
  93. delete[] a;
  94. }
  95.  
  96. void sort2()
  97. {
  98. printf("Введите количество элементов: ");
  99. int n;
  100. scanf_s("%i", &n);
  101. int* a = new int[n];
  102. srand(time(0));
  103. for (int i = 0; i < n; i++)
  104. a[i] = rand() % 101 - 50;
  105. for (int i = 0; i < n - 1; i++)
  106. {
  107.  
  108. int m = i;
  109. for (int j = i + 1; j < n; j++)
  110. {
  111. show(a, n, j, i);
  112. if (a[j] < a[m])
  113. m = j;
  114. }
  115. show(a, n, m, i);
  116. swap(a[i], a[m]);
  117. show(a, n, m, i);
  118.  
  119. }
  120. delete[] a;
  121. }
  122. void sort3()
  123. {
  124. printf("Введите количество элементов: ");
  125. int n;
  126. scanf_s("%i", &n);
  127. int* a = new int[n];
  128. srand(time(0));
  129. for (int i = 0; i < n; i++)
  130. a[i] = (rand() % 101) - 50;
  131.  
  132. for (int i = 1; i < n; ++i)
  133. {
  134.  
  135. int t = a[i];
  136.  
  137. int j = i - 1;
  138. show(a, n, i, j);
  139. while (j >= 0 && a[j] > t)
  140. {
  141. a[j + 1] = a[j];
  142. show(a, n, i, j);
  143. j--;
  144. }
  145. a[j + 1] = t;
  146. show(a, n, -1, -1);
  147.  
  148. }
  149. delete[] a;
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement