Advertisement
Kocyk

Sortowania w C

Dec 7th, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 KB | None | 0 0
  1.  
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #define ROZMIAR 10
  7.  
  8. int pom[ROZMIAR];
  9. int Dane[ROZMIAR];
  10. int sumadanych(int Dane[],short n)
  11. {
  12. int i,suma=0;
  13. for(i=0;i<n;i++) suma+=Dane[i];
  14. return suma;
  15. }
  16. void generujDane(int dane[], short n)
  17. {
  18. time_t t;
  19. srand((unsigned) time(&t));
  20. short i=1;
  21. for (i=0; i<n; i++)
  22. dane[i]= rand()%100-50;
  23. }
  24. void wysdane(int dane[], short n)
  25. {
  26. short i=1;
  27. for (i=0; i<n; i++)
  28. printf ("%d ", dane[i]);
  29. }
  30. void zamien(int dane[], short i, short j)
  31. {
  32. int tmp=dane[i];
  33. dane[i]=dane[j];
  34. dane[j]=tmp;
  35. }
  36. short znajdzimin(int dane[], short p, short k)
  37. {
  38. short i, imin=p;
  39. int min=dane[imin];
  40. for (i=p+1; i<=k; i++)
  41. {
  42. if(min>dane[i] )
  43. {
  44. min=dane[i];
  45. imin=i;
  46. }
  47. }
  48. return imin;
  49. }
  50. void sortbabelkowe(int dane[], short n)
  51. {
  52. short i,j;
  53. for (i=0;i<n-1;i++)
  54. for(j=i+1; j<n; j++)
  55. if(dane[i]>dane[j]) zamien(dane, i, j);
  56. }
  57. void sortwyb(int dane[], short n)
  58. {
  59. short i, imin;
  60. for(i=0; i<n-1; i++)
  61. {
  62. imin=znajdzimin(dane, i, n-1);
  63. zamien(dane, i, imin);
  64. }
  65. }
  66. int znajdzPierwszyElementBisekcja(int element, int dane[], short poczatek, short koniec)
  67. {
  68. short srodek;
  69. while (poczatek<koniec)
  70. {
  71. srodek=(poczatek + koniec)/2;
  72. if (element<=dane[srodek])
  73. koniec=srodek;
  74. else
  75. poczatek=srodek+1;
  76. }
  77. if (element == dane[poczatek])
  78. return poczatek;
  79. else return -1;
  80. }
  81. void sortowanieprzezwstawianie(int dane[], short n)
  82. {
  83. int j,k,i ;
  84. // int pom[ROZMIAR];
  85. k=0;
  86. for(i;i<ROZMIAR;i++)
  87. {
  88. j=k;
  89. while(j>0 && dane[i]<pom[j-1])
  90. {
  91. zamien(pom,j,j-1);
  92. j--;
  93. }
  94. pom[j]=dane[i];
  95. k++;
  96. }
  97. for(i=0;i<n;i++) dane[i]=pom[i];
  98.  
  99. }
  100. void flagapolska(int dane[],int prog,short n)
  101. {
  102. //XD
  103. //beka jak rzeka
  104. int p=0, k=n-1;
  105. while(p<k)
  106. {
  107. while(p<n-1 && dane[p]<prog) p++;
  108. while(k>=0 && dane[k]>= prog) k--;
  109. if(p<k) zamien(dane,p,k);
  110. p++;
  111. k--;
  112. }
  113. }
  114. int bisekcjafp(int element, int dane[], short poczatek, short koniec)
  115. {
  116. short srodek;
  117. while (poczatek<koniec)
  118. {
  119. srodek=(poczatek + koniec)/2;
  120. if (element<=dane[srodek])
  121. koniec=srodek;
  122. else
  123. poczatek=srodek+1;
  124. }
  125.  
  126. return poczatek;
  127.  
  128. }
  129. int compare_int(const int *pa,const int *pb)
  130. {
  131. int *ia = (int *) pa;
  132. int *ib = (int *) pb;
  133. int a = *ia;
  134. int b = *ib;
  135. if(a<b) return 1;
  136. if(a>b) return -1;
  137. return 0;
  138.  
  139. }
  140. int main()
  141. {
  142. printf ("sortowanie \n");
  143. generujDane(Dane, ROZMIAR);
  144. wysdane(Dane, ROZMIAR);
  145. // sortbabelkowe(Dane, ROZMIAR);
  146. //sortwyb(Dane, ROZMIAR);
  147. // sortowanieprzezwstawianie(Dane,ROZMIAR);
  148. // flagapolska(Dane,0,ROZMIAR);
  149. void qsort(void Dane,ROZMIAR,sizeof(int),compare_int)
  150. // printf ("\n\n\n\n");
  151. // printf("\n\n\n\n%d\n\n\n\n", bisekcjafp(0,Dane,0,ROZMIAR-1));
  152. // printf( "suma danych wejsciowych: %d\n",sumadanych(Dane,ROZMIAR));
  153. // printf( "suma danych posortowanych: %d\n",sumadanych(pom,ROZMIAR));
  154. wysdane(Dane, ROZMIAR);
  155. int i = znajdzPierwszyElementBisekcja(4, Dane,0, ROZMIAR-1);
  156. printf ("\n--->%d\n", i);
  157. return 0;
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement