Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.41 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #define N 20
  5.  
  6. typedef struct element {
  7. int valoare;
  8. }element;
  9.  
  10. typedef element elemente[20];
  11. elemente el;
  12.  
  13. typedef enum{fals, tru} boolean;
  14.  
  15. void insertie(elemente el)
  16. {
  17. int i,j;
  18. element aux;
  19. for(i=1;i<N;i++)
  20. {
  21. aux=el[i];
  22. j=i-1;
  23. while(j>=0&&el[j].valoare>aux.valoare)
  24. {
  25. el[j+1]=el[j];
  26. j--;
  27. }
  28. el[j+1]=aux;
  29. }
  30. }
  31.  
  32.  
  33. void insertieBinara(elemente el)
  34. {
  35. int i,j,s,d,m;
  36. element aux;
  37. for(i=1;i<N;i++)
  38. {
  39. aux=el[i];
  40. s=0; d=i-1;
  41. while(s<=d)
  42. {
  43. m=(s+d)/2;
  44. if(el[m].valoare>aux.valoare)
  45. d=m-1;
  46. else s=m+1;
  47. }
  48. for(j=i-1;j>=s;j--)
  49. {
  50. el[j+1]=el[j];
  51. }
  52. el[s]=aux;
  53. }
  54. }
  55.  
  56.  
  57. void selectie(elemente el)
  58. {
  59. int i,j,k_min;
  60. element aux_min,aux;
  61. for(i=0;i<N-1;i++)
  62. {
  63. aux_min=el[i];
  64. k_min=i;
  65. for(j=i;j<N;j++)
  66. if(aux_min.valoare>el[j].valoare)
  67. {
  68. aux_min=el[j];
  69. k_min=j;
  70. }
  71. aux=el[i];
  72. el[i]=el[k_min];
  73. el[k_min]=aux;
  74. }
  75. }
  76.  
  77. void selectiePerf(elemente el)
  78. {
  79. int i,j,k_min;
  80. element aux_min,aux;
  81. for(i=0;i<N-1;i++)
  82. {
  83. k_min=i;
  84. for(j=i;j<N;j++)
  85. if(el[k_min].valoare>el[j].valoare)
  86. {
  87. k_min=j;
  88. }
  89. aux=el[i];
  90. el[i]=el[k_min];
  91. el[k_min]=aux;
  92. }
  93. }
  94.  
  95.  
  96. void bubble(elemente el)
  97. {
  98. int i,j;
  99. element aux;
  100.  
  101. for(i=1;i<N-1;i++)
  102. {
  103. for(j=N-1;j>=i;j--)
  104. if(el[j-1].valoare>el[j].valoare)
  105. {
  106. aux=el[j-1];
  107. el[j-1]=el[j];
  108. el[j]=aux;
  109. }
  110. }
  111. }
  112.  
  113.  
  114. void shakesort(elemente el)
  115. {
  116. int j,k,st,dr;
  117. element aux;
  118. st=1;
  119. dr=N-1;
  120. k=N-1;
  121.  
  122. do{
  123. for(j=dr;j>=st;j--)
  124. if(el[j-1].valoare>el[j].valoare)
  125. {
  126. aux=el[j-1];
  127. el[j-1]=el[j];
  128. el[j]=aux;
  129. k=j;
  130. }
  131. st=k+1;
  132. for(j=st;j<=dr;j++)
  133. if(el[j-1].valoare>el[j].valoare)
  134. {
  135. aux=el[j-1];
  136. el[j-1]=el[j];
  137. el[j]=aux;
  138. k=j;
  139. }
  140. dr=k-1;
  141. }while(st<=dr);
  142. }
  143.  
  144.  
  145. void shellsort(elemente el)
  146. {
  147. int h[3]={3,2,1};
  148. int i,j,k,w,t=3;
  149. element aux;
  150. for(w=0;w<t;w++)
  151. {
  152. k=h[w];
  153. for(i=k;i<N;i=i+k)
  154. {
  155. aux=el[i];
  156. j=i-k;
  157. while(j>=0&&el[j].valoare>aux.valoare)
  158. {
  159. el[j+k]=el[j];
  160. j=j-k;
  161. }
  162. el[j+k]=aux;
  163. }
  164.  
  165. }
  166. }
  167.  
  168.  
  169. void quicksort(int st, int dr)
  170. {
  171. int i,j;
  172. element x,aux;
  173. i=st;
  174. j=dr;
  175. x=el[(st+dr)/2];
  176. do{
  177. while(el[i].valoare<x.valoare)
  178. i++;
  179. while(el[j].valoare>x.valoare)
  180. j--;
  181. if(i<=j)
  182. {
  183. aux=el[i];
  184. el[i]=el[j];
  185. el[j]=aux;
  186. i++;
  187. j--;
  188. }
  189. }while(i<=j);
  190.  
  191. if(st<j)
  192. quicksort(st,j);
  193. if(dr>i)
  194. quicksort(i,dr);
  195. }
  196.  
  197.  
  198.  
  199. void deplasare(int s, int d)
  200. {
  201. int i,j;
  202. element x;
  203. boolean bul;
  204. //while(el[s].valoare>el[2*s].valoare&&el[s].valoare>el[2*s+1].valoare)
  205. i=s;
  206. j=2*i;
  207. x=el[i];
  208. bul=fals;
  209.  
  210. while(j<=d&&bul==fals)
  211. {
  212. if(j<d)
  213. {
  214. if(el[j].valoare<el[j+1].valoare)
  215. j++;
  216. }
  217. if(x.valoare<el[j].valoare)
  218. {
  219. el[i]=el[j];
  220. i=j;
  221. j=2*i;
  222. }
  223. else
  224. bul=tru;
  225.  
  226. }
  227. el[i]=x;
  228. }
  229.  
  230.  
  231. void heapsort(elemente el)
  232. {
  233. int s,d;
  234. element auxx;
  235.  
  236. s=N/2+1;
  237. d=N;
  238.  
  239. while(s>1)
  240. {
  241. s--;
  242. deplasare(s,N-1);
  243. }
  244.  
  245. while(d>1)
  246. {
  247. auxx=el[1];
  248. el[1]=el[d];
  249. el[d]=auxx;
  250. d--;
  251. deplasare(1,d);
  252. }
  253. }
  254.  
  255.  
  256. int main()
  257. {
  258. int i;
  259. for(i=0;i<N;i++)
  260. el[i].valoare=rand();
  261.  
  262.  
  263. for(i=0;i<N;i++)
  264. printf("%d\n", el[i].valoare);
  265.  
  266. printf("\n\n");
  267.  
  268. heapsort(el);
  269.  
  270. printf("\n");
  271. for(i=0;i<N;i++)
  272. printf("%d\n", el[i].valoare);
  273. getch();
  274. return 0;
  275. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement