Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. #include "analyze.h"
  2. #include "algorithm.h"
  3.  
  4. void creat_array(int *arr, case_t c, result_t *buf,int n){
  5.  
  6. int i, size;
  7. size = buf[n].size;
  8.  
  9. //printf("%d\n", size);
  10.  
  11. if(c == best_t)
  12. {
  13. for(i=0;i<size;i++){
  14. *arr=i;
  15. arr++;
  16. }
  17. }
  18. if(c == worst_t)
  19. {
  20. for(i=0;i<size;i++){
  21. *arr=size-i;
  22. arr++;
  23. }
  24. }
  25. if(c == average_t)
  26. {
  27. for(i=0;i<size;i++){
  28. if(i<(size/2))
  29. {
  30. *arr= i;
  31. arr++;
  32. }
  33. if(i>(size/2))
  34. {
  35. *arr=size-i;
  36. arr++;
  37. }
  38. }
  39. }
  40.  
  41. }
  42.  
  43. void benchmark(const algorithm_t a, const case_t c, result_t *buf, int n)
  44. {
  45. struct timespec start, stop;
  46. long s, ns;
  47. int i, g, j, x, search, b=1000000000;
  48. int *array;
  49. buf[0].size = SIZE_START;
  50. x=1;
  51.  
  52. //Sätter alla storlekar till rätt värdet i buf.size
  53. for(g=0;g<n;g++){
  54. if(x<n){
  55. buf[x].size = buf[g].size*2;
  56. }
  57. x++;
  58. }
  59. for(g=0;g<(n*n*n);g++)
  60. {
  61. search = rand() % buf[g%n].size;
  62. /*if(c == best_t)
  63. {
  64. for(i=0;i<buf[g%n].size;i++)
  65. {
  66. array[i] = i;
  67. // printf("%d ", array[i]);
  68. }
  69. }
  70.  
  71. else if(c == worst_t)
  72. {
  73. for(i=0;i<buf[g%n].size;i++)
  74. {
  75. array[i] = (buf[g%n].size - i);
  76. // printf("%d ", array[i]);
  77. }
  78. }
  79.  
  80. else if(c == average_t)
  81. {
  82. // srand(time(NULL));
  83. for(i=0;i<buf[g%n].size;i++)
  84. {
  85. array[i] = rand() % buf[g%n].size;
  86. // printf("%d ", array[i]);
  87.  
  88. }
  89. }*/
  90.  
  91. array = (int*)malloc(buf[g%n].size*sizeof(int));
  92. creat_array(array, c, buf, (g%n));
  93.  
  94. if(a == bubble_sort_t)
  95. {
  96. clock_gettime(CLOCK_MONOTONIC, &start);
  97. bubble_sort(array, buf[g%n].size);
  98. }
  99.  
  100. else if(a == quick_sort_t)
  101. {
  102. clock_gettime(CLOCK_MONOTONIC, &start);
  103. quick_sort(array, buf[g%n].size);
  104. }
  105.  
  106. else if(a == insertion_sort_t)
  107. {
  108. clock_gettime(CLOCK_MONOTONIC, &start);
  109. insertion_sort(array, buf[g%n].size);
  110. }
  111.  
  112. else if(a == linear_search_t && c == best_t)
  113. {
  114. clock_gettime(CLOCK_MONOTONIC, &start);
  115. linear_search(array, buf[g%n].size, 0);
  116. }
  117.  
  118. else if(a == linear_search_t && c == worst_t)
  119. {
  120. clock_gettime(CLOCK_MONOTONIC, &start);
  121. linear_search(array, buf[g%n].size, -1);
  122. }
  123.  
  124. else if(a == linear_search_t && c == average_t)
  125. {
  126. clock_gettime(CLOCK_MONOTONIC, &start);
  127. linear_search(array, buf[g%n].size, search);
  128. }
  129.  
  130. else if(a == binary_search_t && c == best_t)
  131. {
  132. clock_gettime(CLOCK_MONOTONIC, &start);
  133. binary_search(array, buf[g%n].size, (buf[g%n].size)/2);
  134. }
  135.  
  136. else if(a == binary_search_t && c == worst_t)
  137. {
  138. quick_sort(array, buf[g%n].size);
  139. clock_gettime(CLOCK_MONOTONIC, &start);
  140. binary_search(array, buf[g%n].size, -1);
  141. }
  142.  
  143. else if(a == binary_search_t && c == average_t)
  144. {
  145. quick_sort(array, buf[g%n].size);
  146. clock_gettime(CLOCK_MONOTONIC, &start);
  147. binary_search(array, buf[g%n].size, search);
  148.  
  149. }
  150. clock_gettime(CLOCK_MONOTONIC, &stop);
  151. s = stop.tv_sec - start.tv_sec;
  152. ns = stop.tv_nsec - start.tv_nsec;
  153. if(start.tv_nsec > stop.tv_nsec) { // clock underflow
  154. --s;
  155. ns += b;
  156. }
  157.  
  158. buf[g%n].time += ((double)s + (double)ns) / (double)b;
  159. free(array);
  160. }
  161. for(g=0;g<n;g++){
  162. buf[g].time = (buf[g].time / (n*n));
  163. }
  164.  
  165. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement