Advertisement
Guest User

sortowania_moje

a guest
Mar 28th, 2017
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. // babelky.cpp: Określa punkt wejścia dla aplikacji konsoli.
  2. //
  3.  
  4. #define N 10
  5. #include "stdafx.h"
  6. #include <conio.h>
  7. #include <time.h>
  8. #include <stdlib.h>
  9.  
  10. void SortujBabelkowo(int *tab, const int elementy)
  11. {
  12. bool modyfikacja;
  13. int temp, licznik = 0;
  14.  
  15. for (int i = 0; i < elementy; i++) // i -> ilosc calkowitych przebeigow
  16. {
  17. modyfikacja = false;
  18. for (int j = 0; j < elementy - 1 - i; j++) // j -> ilosc operacji sortowania
  19. {
  20. if (tab[j] > tab[j + 1]) // jezeli ma byc kolejnosc malejaca: '<'
  21. {
  22. temp = tab[j];
  23. tab[j] = tab[j + 1];
  24. tab[j + 1] = temp;
  25.  
  26. modyfikacja = true;
  27. licznik++;
  28. }
  29. }
  30. if (modyfikacja == false) break;
  31. }
  32. printf("licznik: %d\n", licznik);
  33. }
  34.  
  35. void SortujWstawianie(int *tab, const int elementy)
  36. {
  37. int temp, j;
  38.  
  39. for (int i = 0; i < elementy; i++) // i -> ilosc calych przebiegow
  40. {
  41. temp = tab[i];
  42. for (j = i; j > 0; j--) // j -> porownywanie z wczesniej wybranymi liczbami
  43. {
  44. if (temp > tab[j - 1]) break; // jesli ma byc kolejnosc malejaca: '<'
  45. tab[j] = tab[j - 1];
  46. }
  47. tab[j] = temp;
  48. }
  49. }
  50.  
  51. void SortujWybieranie(int *tab, const int elementy)
  52. {
  53. int temp, k;
  54.  
  55. for (int i = 0; i < elementy; i++)
  56. {
  57. temp = i;
  58. for (int j = (i + 1); j < elementy; j++)
  59. {
  60. if (tab[temp] > tab[j])
  61. {
  62. temp = j;
  63. }
  64. }
  65. k = tab[i];
  66. tab[i] = tab[temp];
  67. tab[temp] = k;
  68. }
  69. }
  70.  
  71. void SortujKoktajlowe(int *tab, const int elementy)
  72. {
  73. int temp;
  74. bool mu;
  75.  
  76. for (int i = 0; i < elementy; i++)
  77. {
  78. mu = false;
  79. for (int j = i + 1; j < elementy - i; j++)
  80. {
  81. if (tab[j] < tab[j - 1])
  82. {
  83. temp = tab[j];
  84. tab[j] = tab[j - 1];
  85. tab[j - 1] = temp;
  86. mu = true;
  87. }
  88. }
  89. for (int j = elementy - 1 - i; j >= i + 1; j--)
  90. {
  91. if (tab[j] < tab[j - 1])
  92. {
  93. temp = tab[j];
  94. tab[j] = tab[j - 1];
  95. tab[j - 1] = temp;
  96. mu = true;
  97. }
  98. }
  99. if (mu == false) break;
  100. }
  101. }
  102.  
  103. void SortujQuick(int *tab, const int lewy, const int prawy)
  104. {
  105. int l, p, v, temp;
  106. l = lewy;
  107. p = prawy;
  108. v = tab[(l + p) / 2];
  109. do
  110. {
  111. while (tab[l] > v)
  112. {
  113. l++;
  114. }
  115. while (v > tab[p])
  116. {
  117. p--;
  118. }
  119. if (l <= p)
  120. {
  121. temp = tab[l];
  122. tab[l] = tab[p];
  123. tab[p] = temp;
  124. l++;
  125. p--;
  126. }
  127. } while (l <= p);
  128.  
  129. if (lewy < p) {
  130. SortujQuick(tab, lewy, p);
  131. }
  132. if (l < prawy) {
  133. SortujQuick(tab, l, prawy);
  134. }
  135. }
  136.  
  137. void losuj(int *tab, const int elementy)
  138. {
  139. for (int i = 0; i < elementy; i++)
  140. {
  141. tab[i] = rand() % 101;
  142. }
  143. }
  144.  
  145. void wyswietl(int *tab, const int elementy)
  146. {
  147. for (int i = 0; i < elementy; i++)
  148. {
  149. printf("%d\n", tab[i]);
  150. }
  151. }
  152.  
  153. int main()
  154. {
  155. srand(time(NULL));
  156. int tab[N];
  157.  
  158. losuj(tab, N);
  159. wyswietl(tab, N);
  160. printf("\n");
  161. SortujBabelkowo(tab, N);
  162. //SortujWstawianie(tab, N);
  163. //SortujWybieranie(tab, N);
  164. //SortujKoktajlowe(tab, N);
  165. //SortujQuick(tab, 0, N - 1);
  166. wyswietl(tab, N);
  167.  
  168. _getch();
  169. return 0;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement