Advertisement
Guest User

Untitled

a guest
Nov 21st, 2014
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.87 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h> // rand(), srand()
  3. #include <time.h> // time()
  4. // #include <conio.h>
  5. #define MAXINT 32000
  6. #define BASE 10
  7.  
  8. void printvek(int* vek, int n)
  9. {
  10. int i;
  11.  
  12. for (i = 0; i < n; i++)
  13. {
  14. printf("%i ", vek[i]);
  15. }
  16. printf("\n");
  17. }
  18.  
  19. void genvek(int* vek, int n, int x, int lim)
  20. {
  21. int i;
  22.  
  23. vek = malloc(sizeof( int ) * n);
  24.  
  25. if (x == 1)
  26. {
  27. for (i = 0; i <= n; i++)
  28. {
  29. vek[i] = i + 1;
  30. }
  31. }
  32. else if (x == 2)
  33. {
  34. srand((unsigned) time(NULL));
  35. for (i = 0; i <= n; i++)
  36. {
  37. vek[i] = rand() % lim + 1;
  38. }
  39. }
  40. else if (x == 3)
  41. {
  42. for (i = 0; i < n; i++)
  43. {
  44. vek[i] = n - i;
  45. }
  46. }
  47.  
  48. printvek(vek, n);
  49. }
  50.  
  51. struct node
  52. {
  53. int val;
  54. struct node* left;
  55. struct node* right;
  56. };
  57.  
  58. void wrb(struct node* rad, int* vect)
  59. {
  60. static int count = 0;
  61.  
  62. if (rad->left)
  63. {
  64. wrb(rad->left, vect);
  65. }
  66. vect[count++] = rad->val;
  67. // prn( vect , 20 );
  68. // printf("(%i):%i\n",count,rad->val);
  69. // count++;
  70. if (rad->right)
  71. {
  72. wrb(rad->right, vect);
  73. }
  74. }
  75.  
  76. void binary_search_tree(int* vect, int size)
  77. {
  78. struct node* rad, * nou, * p;
  79. int i;
  80.  
  81. rad = (struct node*) malloc(sizeof( struct node ));
  82.  
  83. rad->val = vect[0];
  84. rad->left = rad->right = NULL;
  85.  
  86. for (i = 1; i < size; i++)
  87. {
  88. nou = (struct node*) malloc(sizeof( struct node ));
  89.  
  90. nou->val = vect[i];
  91. nou->left = nou->right = NULL;
  92.  
  93. p = rad;
  94. while (1)
  95. {
  96. if (p->val > nou->val)
  97. {
  98. if (p->left)
  99. {
  100. p = p->left;
  101. }
  102. else
  103. {
  104. p->left = nou;
  105. break;
  106. }
  107. }
  108. else if (p->right)
  109. {
  110. p = p->right;
  111. }
  112. else
  113. {
  114. p->right = nou;
  115. break;
  116. }
  117. }
  118. }
  119. // bin(rad,0);
  120.  
  121. // wrb( rad , vect );
  122. // printf("\n");
  123. printvek(vect, size);
  124. }
  125.  
  126. void radix_sort(int* vect, int size)
  127. {
  128. int* temp, step = 1, nr_dig[BASE], pos[BASE], i, max = vect[0], start;
  129.  
  130. temp = (int*) malloc(size * sizeof( int ));
  131.  
  132. for (i = 1; i < size; i++)
  133. {
  134. if (max < vect[i])
  135. {
  136. max = vect[i];
  137. }
  138. }
  139.  
  140. while (max > 0)
  141. {
  142. for (i = 0; i < BASE; i++)
  143. {
  144. nr_dig[i] = 0;
  145. }
  146.  
  147. for (i = 0; i < size; i++)
  148. {
  149. nr_dig[( vect[i] / step ) % BASE]++;
  150. }
  151.  
  152. for (i = 1; i < BASE; i++)
  153. {
  154. nr_dig[i] += nr_dig[i - 1];
  155. }
  156.  
  157. pos[0] = 0;
  158. for (i = 0; i < BASE - 1; i++)
  159. {
  160. pos[i + 1] = nr_dig[i];
  161. }
  162.  
  163. for (i = 0; i < size; i++)
  164. {
  165. start = ( vect[i] / step ) % BASE;
  166. temp[pos[start]++] = vect[i];
  167. }
  168.  
  169. for (i = 0; i < size; i++)
  170. {
  171. vect[i] = temp[i];
  172. }
  173.  
  174. max = max / BASE;
  175. step = step * BASE;
  176.  
  177. // prn( nr_dig , BASE );
  178. printvek(vect, size);
  179. }
  180. }
  181.  
  182. void cocktail_sort(int* vect, int size)
  183. {
  184. int swap = 1, i, temp;
  185.  
  186. while (swap)
  187. {
  188. swap = 0;
  189. for (i = 0; i < size - 1; i++)
  190. {
  191. if (vect[i] > vect[i + 1])
  192. {
  193. temp = vect[i];
  194. vect[i] = vect[i + 1];
  195. vect[i + 1] = temp;
  196.  
  197. swap = 1;
  198. }
  199. }
  200. if (!swap)
  201. {
  202. break;
  203. }
  204. // swap=0;
  205. for (i = size - 2; i >= 0; i--)
  206. {
  207. if (vect[i] > vect[i + 1])
  208. {
  209. temp = vect[i];
  210. vect[i] = vect[i + 1];
  211. vect[i + 1] = temp;
  212.  
  213. swap = 1;
  214. }
  215. }
  216. }
  217. }
  218.  
  219. int main()
  220. {
  221. int choice;
  222. int* v1 = 0;
  223.  
  224. printf("Mod Choice:\n");
  225. printf("1)Modul de testare:\n2)Modul de analiza:\n");
  226. scanf("%d", &choice);
  227. genvek(v1, 10, 2, 100);
  228.  
  229. // clrscr();
  230.  
  231. if (choice == 1)
  232. {
  233. printf("Modul analiza -|--\n");
  234. // printvek(v1, 10);
  235. }
  236. else
  237. {
  238. printf("Modul testare :)\n");
  239. printvek(v1, 10);
  240. }
  241.  
  242. return 0;
  243. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement