Advertisement
Guest User

Untitled

a guest
Jan 24th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void sortowaniebabelkowe(int tab[], int n)
  4. {
  5. int i, j;
  6. for(i=1; i<n; i++)
  7. {
  8. for(j=n-1; j>=1; j--)
  9. {
  10. if(tab[j]<tab[j-1])
  11. {
  12. int zmien;
  13. zmien=tab[j-1];
  14. tab[j-1]=tab[j];
  15. tab[j]=zmien;
  16. }
  17. }
  18. }
  19. }
  20.  
  21. int partition(int tab[], int p, int r) // dzielimy tablice na dwie czesci, w pierwszej wszystkie liczby sa mniejsze badz rowne x, w drugiej wieksze lub rowne od x
  22. {
  23. int x = tab[p]; // obieramy x
  24. int i = p, j = r, w; // i, j - indeksy w tabeli
  25. while (1) // petla nieskonczona - wychodzimy z niej tylko przez return j
  26. {
  27. while (tab[j] > x) // dopoki elementy sa wieksze od x
  28. j--;
  29. while (tab[i] < x) // dopoki elementy sa mniejsze od x
  30. i++;
  31. if (i < j) // zamieniamy miejscami gdy i < j
  32. {
  33. w = tab[i];
  34. tab[i] = tab[j];
  35. tab[j] = w;
  36. i++;
  37. j--;
  38. }
  39. else // gdy i >= j zwracamy j jako punkt podzialu tablicy
  40. return j;
  41. }
  42. }
  43.  
  44. void quicksort(int tab[], int p, int r) // sortowanie szybkie
  45. {
  46. int q;
  47. if (p < r)
  48. {
  49. q = partition(tab,p,r); // dzielimy tablice na dwie czesci; q oznacza punkt podzialu
  50. quicksort(tab, p, q); // wywolujemy rekurencyjnie quicksort dla pierwszej czesci tablicy
  51. quicksort(tab, q+1, r); // wywolujemy rekurencyjnie quicksort dla drugiej czesci tablicy
  52. }
  53. }
  54.  
  55. void sortowanie_przez_wstawianie(int n, int tab[])
  56. {
  57. int i, pom, j;
  58. for(i=1; i<n; i++)
  59. {
  60. //wstawienie elementu w odpowiednie miejsce
  61. pom = tab[i]; //ten element bêdzie wstawiony w odpowiednie miejsce
  62. j = i-1;
  63.  
  64. //przesuwanie elementów wiêkszych od pom
  65. while(j>=0 && tab[j]>pom)
  66. {
  67. tab[j+1] = tab[j]; //przesuwanie elementów
  68. --j;
  69. }
  70. tab[j+1] = pom; //wstawienie pom w odpowiednie miejsce
  71. }
  72. }
  73.  
  74. void selectionsort(int tab[], int n)
  75. {
  76. int min,i,j,temp;
  77. for (i=0; i<n-1; i++)
  78. {
  79. min=i;
  80. for (j=i+1; j<n; j++)
  81. if (tab[j]<tab[min]) min=j;
  82. temp=tab[min];
  83. tab[min]=tab[i];
  84. tab[i]=temp;
  85. }
  86. }
  87.  
  88. int main()
  89. {
  90. int n, c, d, i, tab[200], x;
  91. printf("Ile liczb ma zawierac ciag n?: ");
  92. scanf("%d", &n);
  93. printf("\nWybierz 1 jesli chcesz wpisac ciag sam\nWybierz 2 jesli chcesz aby ciag zostal wygenerowany losowo\n");
  94. printf("Twoj wybor: ");
  95. scanf("%d", &c);
  96. switch(c)
  97. {
  98. case 1:
  99. {
  100. printf("Wybierz metode sortowania\n");
  101. printf("1-Sortowanie Karciane, 2-Bubble Sort, 3-Selection Sort, 4-Quicksort");
  102. printf("\nTwoj wybor: ");
  103. scanf("%d", &d);
  104. switch(d)
  105. {
  106. case 1:
  107. {
  108. for(i=0; i<n; i++)
  109. {
  110. printf("Podaj %d element: ", i+1);
  111. scanf("%d", &tab[i]);
  112. }
  113.  
  114. printf("elementy przed sortowaniem: \n");
  115. for(i=0; i<n; i++)
  116. {
  117. printf("%d\n", tab[i]);
  118. }
  119.  
  120.  
  121. sortowanie_przez_wstawianie(n, tab);
  122.  
  123. printf("elementy posortowane: \n");
  124. for(i=0; i<n; i++)
  125. {
  126. printf("%d\n", tab[i]);
  127. }
  128. }
  129. break;
  130. case 2:
  131. {
  132. for(i=0; i<n; i++)
  133. {
  134. printf("Podaj %d element: ", i+1);
  135. scanf("%d", &tab[i]);
  136. }
  137.  
  138. printf("elementy przed sortowaniem: \n");
  139. for(i=0; i<n; i++)
  140. {
  141. printf("%d\n", tab[i]);
  142. }
  143.  
  144.  
  145. sortowaniebabelkowe(tab, n);
  146.  
  147. printf("elementy posortowane: \n");
  148. for(i=0; i<n; i++)
  149. {
  150. printf("%d\n", tab[i]);
  151. }
  152.  
  153. break;
  154.  
  155. }
  156. case 3:
  157. {
  158. for(i=0; i<n; i++)
  159. {
  160. printf("Podaj %d element: ", i+1);
  161. scanf("%d", &tab[i]);
  162. }
  163.  
  164. printf("elementy przed sortowaniem: \n");
  165. for(i=0; i<n; i++)
  166. {
  167. printf("%d\n", tab[i]);
  168. }
  169.  
  170.  
  171. selectionsort(tab, n);
  172.  
  173. printf("elementy posortowane: \n");
  174. for(i=0; i<n; i++)
  175. {
  176. printf("%d\n", tab[i]);
  177. }
  178. }
  179. break;
  180.  
  181. case 4:
  182. {
  183. for(i=0; i<n; i++)
  184. {
  185. printf("Podaj %d element: ", i+1);
  186. scanf("%d", &tab[i]);
  187. }
  188.  
  189. printf("elementy przed sortowaniem: \n");
  190. for(i=0; i<n; i++)
  191. {
  192. printf("%d\n", tab[i]);
  193. }
  194.  
  195.  
  196. quicksort(tab, 0, n-1);
  197.  
  198. printf("elementy posortowane: \n");
  199. for(i=0; i<n; i++)
  200. {
  201. printf("%d\n", tab[i]);
  202. }
  203. }
  204. }break;
  205. }
  206. case 2:
  207. {
  208. printf("Wybierz metode sortowania\n");
  209. printf("1-Sortowanie Karciane, 2-Bubble Sort, 3-Selection Sort, 4-Quicksort");
  210. printf("\nTwoj wybor: ");
  211. scanf("%d", &d);
  212. switch(d)
  213. {
  214. case 1:
  215. {
  216. x=1234;
  217. srand(x);
  218. printf("Wartosci liczbowe przed posortowaniem: ");
  219. for(i=0; i<n; i++)
  220. {
  221. tab[i]=rand()%1001;
  222. printf("\n%d ", tab[i]);
  223. }
  224. sortowanie_przez_wstawianie(n, tab);
  225. printf("\n\nPo posortowaniu: \n");
  226. for(i=0; i<n; i++)
  227. {
  228. printf("\n%d ", tab[i]);
  229. }
  230. break;
  231. }
  232. case 2:
  233. {
  234. x=1634;
  235. srand(x);
  236. printf("Wartosci liczbowe przed posortowaniem: ");
  237. for(i=0; i<n; i++)
  238. {
  239. tab[i]=rand()%1001;
  240. printf("\n%d ", tab[i]);
  241. }
  242. sortowaniebabelkowe(tab, n);
  243.  
  244. printf("\n\nPo posortowaniu: \n");
  245. for(i=0; i<n; i++)
  246. {
  247. printf("\n%d ", tab[i]);
  248. }
  249. break;
  250. }
  251. case 3:
  252. {
  253. x=9999;
  254. srand(x);
  255. printf("Wartosci liczbowe przed posortowaniem: ");
  256. for(i=0; i<n; i++)
  257. {
  258. tab[i]=rand()%1001;
  259. printf("\n%d ", tab[i]);
  260. }
  261. selectionsort(tab, n);
  262.  
  263. printf("\n\nPo posortowaniu: \n");
  264. for(i=0; i<n; i++)
  265. {
  266. printf("\n%d ", tab[i]);
  267. }
  268. break;
  269. }
  270. case 4:
  271. {
  272. x=9119;
  273. srand(x);
  274. printf("Wartosci liczbowe przed posortowaniem: ");
  275. for(i=0; i<n; i++)
  276. {
  277. tab[i]=rand()%1001;
  278. printf("\n%d ", tab[i]);
  279. }
  280. quicksort(tab, 0, n-1);
  281.  
  282. printf("\n\nPo posortowaniu: \n");
  283. for(i=0; i<n; i++)
  284. {
  285. printf("\n%d ", tab[i]);
  286. }
  287. }break;
  288. }
  289. }
  290. break;
  291. }
  292. return 0;
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement