Advertisement
Guest User

Untitled

a guest
Nov 20th, 2018
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.18 KB | None | 0 0
  1. #include<stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. //#define MAX 60000l
  5. #define MLD 1000000000.0
  6. void swap(int* a, int* b)
  7. {
  8.     int t = *a;
  9.     *a = *b;
  10.     *b = t;
  11. }
  12. void printArray(int A[], int size)
  13. {
  14.     int i;
  15.     for (i=0; i < size; i++){
  16.         printf("%d ", A[i]);
  17. }
  18.         printf("\n");
  19. }
  20.  
  21. int Partition (int A[], int p, int r)
  22. {
  23.     int x = A[r];
  24.     int i = (p - 1);
  25.     int j;
  26.     for (j = p; j <= r; j++)
  27.     {
  28.         if (A[j] <= x)
  29.         {
  30.             i++;
  31.             swap(&A[i], &A[j]);
  32.         }
  33.     }
  34.     if(i<r)
  35.     return i;
  36.     else return i-1;
  37. }
  38. void QuickSort(int A[], int p, int r)
  39. {
  40.     if (p < r)
  41.     {
  42.         int q = Partition(A, p, r);
  43.         QuickSort(A, p, q);
  44.         QuickSort(A, q + 1, r);
  45.     }
  46. }
  47. void BubbleSort(int A[], int n)
  48. {
  49.    int i, j;
  50.    for (i = 0; i < n; i++)
  51.        for (j = 0; j < n-i; j++)
  52.            if (A[j] > A[j+1])
  53.               swap(&A[j], &A[j+1]);
  54. }
  55. void BubbleQuickSort(int A[], int p, int r)
  56. {
  57.     if (p < r)
  58.     {
  59.         if(r<=1000)
  60.         {
  61.             BubbleSort(A,r);
  62.         }
  63.         else
  64.         {
  65.             int q = Partition(A, p, r);
  66.             QuickSort(A, p, q);
  67.             QuickSort(A, q + 1, r);
  68.         }
  69.     }
  70. }
  71.  
  72. int main()
  73. {printf("DANE LOSOWE\nrozmiar tablicy N|QuickSort|BubbleQuickSort\n");
  74. struct timespec tp0, tp1;
  75.     double Tn,Tn2;
  76.     int n;
  77.  
  78. for(n=10000;n<1000000;n=n+10000)
  79.    { srand( time(NULL));
  80.     int i,j;
  81.     int A[n];
  82.     int A2[n];
  83.     for(i=0; i<n; i++)
  84.     {
  85.         A[i] = rand()%n+1;
  86.     }
  87.     for(i=0;i<n;i++)
  88.     {
  89.         A2[i]=A[i];
  90.     }
  91.  
  92. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp0);
  93. QuickSort(A,0,n);
  94. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp1);
  95. Tn=(tp1.tv_sec+tp1.tv_nsec/MLD)-(tp0.tv_sec+tp0.tv_nsec/MLD);
  96. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp0);
  97. BubbleQuickSort(A2,0,n);
  98. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp1);
  99. Tn2=(tp1.tv_sec+tp1.tv_nsec/MLD)-(tp0.tv_sec+tp0.tv_nsec/MLD);
  100. printf("%d            | %3.5lf | %3.5lf \n",n,Tn,Tn2);
  101. }
  102.     return 0;
  103. }
  104.  
  105.  
  106. #include<stdio.h>
  107. #include <stdlib.h>
  108. #include <time.h>
  109. //#define MAX 60000l
  110. #define MLD 1000000000.0
  111. void swap(int* a, int* b)
  112. {
  113.     int t = *a;
  114.     *a = *b;
  115.     *b = t;
  116. }
  117. void printArray(int A[], int size)
  118. {
  119.     int i;
  120.     for (i=0; i < size; i++){
  121.         printf("%d ", A[i]);
  122. }
  123.         printf("\n");
  124. }
  125.  
  126. int Partition (int A[], int p, int r)
  127. {
  128.     int x = A[r];
  129.     int i = (p - 1);
  130.     int j;
  131.     for (j = p; j <= r; j++)
  132.     {
  133.         if (A[j] <= x)
  134.         {
  135.             i++;
  136.             swap(&A[i], &A[j]);
  137.         }
  138.     }
  139.     if(i<r)
  140.     return i;
  141.     else return i-1;
  142. }
  143. void QuickSort(int A[], int p, int r)
  144. {
  145.     if (p < r)
  146.     {
  147.         int q = Partition(A, p, r);
  148.         QuickSort(A, p, q);
  149.         QuickSort(A, q + 1, r);
  150.     }
  151. }
  152. void BubbleSort(int A[], int n)
  153. {
  154.    int i, j;
  155.    for (i = 0; i < n; i++)
  156.        for (j = 0; j < n-i; j++)
  157.            if (A[j] > A[j+1])
  158.               swap(&A[j], &A[j+1]);
  159. }
  160. void BubbleQuickSort(int A[], int p, int r)
  161. {
  162.     if (p < r)
  163.     {
  164.         if(r<=1000)
  165.         {
  166.             BubbleSort(A,r);
  167.         }
  168.         else
  169.         {
  170.             int q = Partition(A, p, r);
  171.             QuickSort(A, p, q);
  172.             QuickSort(A, q + 1, r);
  173.         }
  174.     }
  175. }
  176.  
  177. int main()
  178. {printf("DANE NIEKORZYSTNE\nrozmiar tablicy N|QuickSort|BubbleQuickSort\n");
  179. struct timespec tp0, tp1;
  180.     double Tn,Tn2,Tn3,Tn4;
  181.     int n;
  182.  
  183. for(n=100;n<50000;n=n+100)
  184.    { srand( time(NULL));
  185.     int i,j;
  186.     int A[n];
  187.     int A2[n];
  188.     for(i=0; i<n; i++)
  189.     {
  190.         A[i] = rand()%n+1;
  191.     }
  192.     QuickSort(A,0,n);
  193.         for(i=n-1,j=0;i>j;i--,j++)
  194.     {
  195.     swap(&A[j],&A[i]);}
  196.  
  197.     for(i=0;i<n;i++)
  198.     {
  199.         A2[i]=A[i];
  200.     }
  201. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp0);
  202. QuickSort(A,0,n);
  203. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp1);
  204. Tn=(tp1.tv_sec+tp1.tv_nsec/MLD)-(tp0.tv_sec+tp0.tv_nsec/MLD);
  205. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp0);
  206. BubbleQuickSort(A2,0,n);
  207. clock_gettime(CLOCK_PROCESS_CPUTIME_ID,&tp1);
  208. Tn2=(tp1.tv_sec+tp1.tv_nsec/MLD)-(tp0.tv_sec+tp0.tv_nsec/MLD);
  209. printf("%d            | %3.5lf | %3.5lf \n",n,Tn,Tn2);
  210. }
  211.     return 0;
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement