Guest User

Untitled

a guest
May 23rd, 2019
76
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6. void bubblesort(int tab[], int n) //funkcja sortowania b¹belkowego zbudowana iteracyjnie
  7. {
  8. int i,j;
  9. for(i=1;i<n;i++){
  10. for(j=n-1;j>=1;j--){
  11. if(tab[j]<tab[j-1]){
  12. int swap;
  13. swap=tab[j-1];
  14. tab[j-1]=tab[j];
  15. tab[j]=swap;
  16. }
  17. }
  18. }
  19. }
  20.  
  21. void swap(int *first, int *second)
  22. {
  23. int temporary = *first;
  24. *first = *second;
  25. *second = temporary;
  26. }
  27.  
  28. int partition(int array[], int low, int high)
  29. {
  30. int pivot = array[low];
  31. int i = low-1, j = high+1;
  32.  
  33. while(i<j) {
  34. while(array[--j]>pivot)
  35. ;
  36. while(array[++i]<pivot)
  37. ;
  38. if(i<j)
  39. swap(&array[i],&array[j]);
  40. }
  41. return j;
  42. }
  43.  
  44. void quicksort(int array[], int low, int high)
  45. {
  46. if(low<high) {
  47. int partition_index = partition(array,low,high);
  48. quicksort(array, low, partition_index);
  49. quicksort(array, partition_index+1, high);
  50. }
  51. }
  52.  
  53. void fill(int tab[], int n) //funkcja która uzupe³nia tablicê losowymi liczbami z zakresu -10 do 10
  54. {
  55. srand(time(NULL));
  56. int i;
  57. for(i=0;i<n;i++){
  58. tab[i]=(rand()%21)-10;
  59. }
  60. }
  61.  
  62. void fill_zakres(int tab[], int n)
  63. {
  64. srand(time(NULL));
  65. int i;
  66.  
  67. int a,b,y,z;
  68. printf("Podaj zakres losowania liczb:\n");
  69. printf("Od: ");
  70. scanf("%d", &a);
  71. printf("Do: ");
  72. scanf("%d", &b);
  73. printf("Zakres %d %d\n", a,b);
  74. y=a;
  75. z=b;
  76. if(a<0){
  77. y=a*(-1);
  78. }
  79. if(b<0){
  80. z=b*(-1);
  81. }
  82. printf("y: %d z: %d\n", y,z);
  83.  
  84. int x;
  85. x=y+z+1;
  86. printf("x: %d", x);
  87.  
  88. for(i=0;i<n;i++){
  89. tab[i]=(rand()%x)+a;
  90. }
  91. system("cls");
  92. printf("Zakres %d %d\n", a,b);
  93.  
  94. }
  95.  
  96. void print_tab(int tab[],int n) //funkcja wypisujuj¹ca zawartoœæ tablicy
  97. {
  98. int i;
  99. for(i=0;i<n;i++){
  100. printf("%d ",tab[i]);
  101. }
  102. }
  103.  
  104. int main()
  105. {
  106. clock_t start,stop;
  107. double czas;
  108. int numer;
  109.  
  110. while(1){
  111. system("cls");
  112. printf("Co chcesz zrobic: \n");
  113.  
  114. printf("1.Mierzenie czasu sortowania babelkowego dla n elemenow\n");
  115. printf("2.Wyswietlenie tablicy przed i po sortowaniu babelkowym dla n elementow\n");
  116. printf("3.Mierzenie czasu sortowania quicksort dla n elemenow\n");
  117. printf("4.Wyswietlenie tablicy przed i po sortowaniu quciksort dla n elementow\n");
  118. printf("5.Zakoncz dzialanie programu \n");
  119. scanf("%d", &numer);
  120.  
  121. if(numer==1){
  122. system("cls");
  123.  
  124. int n;
  125. printf("Ile liczb wylosowac: ");
  126. scanf("%d", &n); //pobranie od u¿ytkownika iloœci losowanych liczb
  127.  
  128. int tab[n];
  129. fill_zakres(tab,n); //uzupe³nienie tablicy
  130.  
  131. start = clock();
  132. bubblesort(tab,n);
  133. stop = clock();
  134. czas = (double)(stop-start)/CLOCKS_PER_SEC; //wywo³anie funkcji sortuj¹cej tablice
  135. printf("Posortowanie metoda babelkowa %d liczb zajmie: %lf s\n",n,czas);
  136. puts("");
  137. system("pause");
  138. }
  139. else if(numer==2){
  140. system("cls");
  141. int n;
  142. printf("Ile liczb wylosowac: ");
  143. scanf("%d", &n); //pobranie od u¿ytkownika iloœci losowanych liczb
  144.  
  145. int tab[n];
  146. fill_zakres(tab,n); //uzupe³nienie tablicy
  147. puts("\nPrzed sortowaniem :");
  148. print_tab(tab,n); //wypisanie przed wywo³aniem funkcji do sortowania
  149. puts("");
  150. puts("Po sortowaniu: ");
  151. bubblesort(tab,n); //wywo³anie funkcji sortuj¹cej tablice
  152. print_tab(tab,n); //ponowne wypisanie tablicy
  153. puts("");
  154. system("pause");
  155. }
  156.  
  157. else if(numer==3){
  158. system("cls");
  159.  
  160. int n;
  161. printf("Ile liczb wylosowac: ");
  162. scanf("%d", &n); //pobranie od u¿ytkownika iloœci losowanych liczb
  163.  
  164. int tab[n];
  165. fill_zakres(tab,n); //uzupe³nienie tablicy
  166.  
  167. start = clock();
  168. quicksort(tab,0,n-1);
  169. stop = clock();
  170. czas = (double)(stop-start)/CLOCKS_PER_SEC; //wywo³anie funkcji sortuj¹cej tablice
  171. printf("Posortowanie metoda quicksort %d liczb zajmie: %lf s\n",n,czas);
  172. puts("");
  173. system("pause");
  174. }
  175.  
  176. else if(numer==4){
  177. system("cls");
  178. int n;
  179. printf("Ile liczb wylosowac: ");
  180. scanf("%d", &n); //pobranie od u¿ytkownika iloœci losowanych liczb
  181.  
  182. int tab[n];
  183. fill_zakres(tab,n); //uzupe³nienie tablicy
  184. puts("\nPrzed sortowaniem :");
  185. print_tab(tab,n); //wypisanie przed wywo³aniem funkcji do sortowania
  186. puts("");
  187. puts("Po sortowaniu: ");
  188. quicksort(tab,0,n-1); //wywo³anie funkcji sortuj¹cej tablice
  189. print_tab(tab,n); //ponowne wypisanie tablicy
  190. puts("");
  191. system("pause");
  192. }
  193.  
  194.  
  195. else if(numer == 5){
  196. system("cls");
  197. printf("Zakonczono dzialanie.");
  198. return 0;
  199. }
  200. else{
  201. system("cls");
  202. puts("Blad! Podaj odpowiednia wartosc.");
  203. system("pause");
  204. }
  205. }
  206. }
RAW Paste Data