Vikhyath_11

p3b

Jul 27th, 2024
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. #define MAXSIZE 30000
  6. #define NTIMES 5000
  7.  
  8. void merge(int a[], int low, int mid, int high) {
  9. int i, j, k;
  10. int b[MAXSIZE];
  11. i = low;
  12. j = mid + 1;
  13. k = low;
  14. while (i <= mid && j <= high) {
  15. if (a[i] <= a[j]) {
  16. b[k] = a[i];
  17. i++;
  18. } else {
  19. b[k] = a[j];
  20. j++;
  21. }
  22. k++;
  23. }
  24. while (i <= mid) {
  25. b[k] = a[i];
  26. i++;
  27. k++;
  28. }
  29. while (j <= high) {
  30. b[k] = a[j];
  31. j++;
  32. k++;
  33. }
  34. for (i = low; i <= high; i++) {
  35. a[i] = b[i];
  36. }
  37. }
  38.  
  39. void mergesort(int a[], int low, int high) {
  40. int mid;
  41. if (low < high) {
  42. mid = (low + high) / 2;
  43. mergesort(a, low, mid);
  44. mergesort(a, mid + 1, high);
  45. merge(a, low, mid, high);
  46. }
  47. }
  48.  
  49. int main() {
  50. int a[MAXSIZE], n, k, i;
  51. double runtime = 0;
  52. clock_t start, end;
  53.  
  54. printf("Enter the value of n\n");
  55. scanf("%d", &n);
  56.  
  57. for (k = 1; k <= NTIMES; k++) {
  58. srand(time(0));
  59. for (i = 0; i < n; i++) {
  60. a[i] = rand();
  61. }
  62.  
  63. start = clock();
  64. mergesort(a, 0, n - 1);
  65. end = clock();
  66.  
  67. runtime += ((double)(end - start)) / CLOCKS_PER_SEC;
  68. }
  69.  
  70. runtime /= NTIMES;
  71.  
  72. printf("\nSorted elements are\n");
  73. for (i = 0; i < n; i++) {
  74. printf("%d\n", a[i]);
  75. }
  76.  
  77. printf("Time taken for sorting is %lf seconds\n", runtime);
  78.  
  79. return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment