Advertisement
Guest User

sort

a guest
Mar 28th, 2017
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.09 KB | None | 0 0
  1. // AISD_SORTOWANIA.cpp: Określa punkt wejścia dla aplikacji konsoli.
  2. //
  3.  
  4. #include <conio.h>
  5. #include <malloc.h>
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8.  
  9. // Sortowanie bąbelkowe
  10. void SortujBabelkowo(float *tab, const int LiczbaElementow)
  11. {
  12. float buff;
  13. for (int i = 0; i < LiczbaElementow - 1; i++)
  14. {
  15. for (int j = 0; j < LiczbaElementow - 1; j++)
  16. {
  17.  
  18. if (tab[j] < tab[j + 1]) // Sortowanie malejące (od największego do najmniejszego elementu)
  19.  
  20. // if (tab[j] > tab[j + 1]) // Sortowanie rosnące (od najmniejszego do największego elementu)
  21.  
  22. {
  23. buff = tab[j + 1];
  24. tab[j + 1] = tab[j];
  25. tab[j] = buff;
  26. }
  27. }
  28. }
  29. }
  30.  
  31. // QuickSort
  32. void QuickSort(float *tab, int lewy, int prawy) // lewy - index pierwszego elementu prawy - index ostatniego elementu
  33. {
  34. int v = tab[(lewy + prawy) / 2];
  35. int i, j;
  36. float buff;
  37. i = lewy;
  38. j = prawy;
  39. do {
  40.  
  41. while (tab[i] > v) i++; // Sortowanie malejące (od największego do najmniejszego elementu)
  42. while (tab[j] < v) j--; // Sortowanie malejące (od największego do najmniejszego elementu)
  43.  
  44. // while (tab[i] < v) i++; // Sortowanie rosnące (od najmniejszego do największego elementu)
  45. // while (tab[j] > v) j--; // Sortowanie rosnące (od najmniejszego do największego elementu)
  46.  
  47. if (i <= j) {
  48. buff = tab[i];
  49. tab[i] = tab[j];
  50. tab[j] = buff;
  51. i++; j--;
  52. }
  53. } while (i <= j);
  54. if (j > lewy) QuickSort(tab, lewy, j);
  55. if (i < prawy) QuickSort(tab, i, prawy);
  56. }
  57.  
  58. // Sortowanie Przez Wstawianie
  59. void SortowaniePrzezWstawianie(float *tab, int LiczbaElementow)
  60. {
  61. float buff;
  62. int i; // index
  63. for (int j = 1; j < LiczbaElementow; j++)
  64. {
  65. buff = tab[j];
  66. i = j - 1;
  67.  
  68. while (i >= 0 && buff > tab[i]) // Sortowanie malejące (od największego do najmniejszego elementu)
  69.  
  70. // while (i >= 0 && buff < tab[i]) // Sortowanie rosnące (od najmniejszego do największego elementu)
  71.  
  72. {
  73. tab[i + 1] = tab[i];
  74. tab[i] = buff;
  75. i--;
  76. }
  77.  
  78. }
  79. }
  80.  
  81. // Sortowanie Przez Wybieranie
  82. void SortowaniePrzezWybieranie(float *tab, int LiczbaElementow)
  83. {
  84. int min; // Index elementu najmniejszego/największego (zależnie od wybranego sortowania)
  85. float buff;
  86. for (int i = 0; i < LiczbaElementow; i++)
  87. {
  88. min = i;
  89. for (int j = i + 1; j <= LiczbaElementow - 1; j++)
  90. {
  91.  
  92. if (tab[min] < tab[j]) // Sortowanie malejące (od największego do najmniejszego elementu)
  93.  
  94. // if (tab[min] > tab[j]) // Sortowanie rosnące (od najmniejszego do największego elementu)
  95.  
  96. {
  97. min = j;
  98. }
  99. }
  100. buff = tab[i];
  101. tab[i] = tab[min];
  102. tab[min] = buff;
  103. }
  104. }
  105.  
  106. // Sortowanie Koktajlowe
  107. void SortowanieKoktajlowe(float *tab, int LiczbaElementow)
  108. {
  109. bool stan = true;
  110. float buff;
  111. while (stan == true)
  112. {
  113. for (int i = 1; i < LiczbaElementow; i++)
  114. {
  115.  
  116. if (tab[i - 1] < tab[i]) // Sortowanie malejące (od największego do najmniejszego elementu)
  117.  
  118. // if (tab[i - 1] > tab[i]) // Sortowanie rosnące (od najmniejszego do największego elementu)
  119.  
  120. {
  121. buff = tab[i - 1];
  122. tab[i - 1] = tab[i];
  123. tab[i] = buff;
  124. stan = true;
  125. }
  126. else stan = false;
  127. }
  128. for (int i = LiczbaElementow - 1; i > 0; i--)
  129. {
  130.  
  131. if (tab[i - 1] < tab[i]) // Sortowanie malejące (od największego do najmniejszego elementu)
  132.  
  133. // if (tab[i - 1] > tab[i]) // Sortowanie rosnące (od najmniejszego do największego elementu)
  134.  
  135. {
  136. buff = tab[i - 1];
  137. tab[i - 1] = tab[i];
  138. tab[i] = buff;
  139. stan = true;
  140. }
  141. else stan = false;
  142. }
  143. }
  144. }
  145.  
  146.  
  147.  
  148. int main()
  149. {
  150. const int n = 6;
  151. float tab[n];
  152. tab[0] = 3;
  153. tab[1] = 5;
  154. tab[2] = 1;
  155. tab[3] = 3;
  156. tab[4] = 9;
  157. tab[5] = -2;
  158.  
  159.  
  160. //Przed posortowaniem
  161. for (int i = 0; i < n; i++) {
  162. printf("%4.1f ", tab[i]);
  163. }
  164.  
  165. printf("\n");
  166. printf("\n");
  167.  
  168. // SortujBabelkowo(tab, n);
  169. // QuickSort(tab, 0, n - 1);
  170. // SortowaniePrzezWstawianie(tab, n);
  171. // SortowaniePrzezWybieranie(tab, n);
  172. // SortowanieKoktajlowe(tab, n);
  173.  
  174.  
  175. //Po posortowaniu
  176. for (int i = 0; i < n; i++) {
  177. printf("%4.1f ", tab[i]);
  178. }
  179.  
  180.  
  181. getch();
  182. return 0;
  183. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement