SHARE
TWEET

Untitled

a guest Nov 22nd, 2019 79 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top