Guest User

Untitled

a guest
Jul 20th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX_ARY 10
  5.  
  6. void merge_sort(int x[], int end, int start);
  7.  
  8. int main(void) {
  9. int ary[MAX_ARY];
  10. int j = 0;
  11.  
  12. printf("nnEnter the elements to be sorted: n");
  13. for(j=0;j<MAX_ARY;j++)
  14. scanf("%d",&ary[j]);
  15.  
  16. /* array before mergesort */
  17. printf("Before :");
  18. for(j = 0; j < MAX_ARY; j++)
  19. printf(" %d", ary[j]);
  20.  
  21. printf("n");
  22.  
  23. merge_sort(ary, 0, MAX_ARY - 1);
  24.  
  25. /* array after mergesort */
  26. printf("After Merge Sort :");
  27. for(j = 0; j < MAX_ARY; j++)
  28. printf(" %d", ary[j]);
  29.  
  30. printf("n");
  31. getch();
  32. }
  33.  
  34. /* Method to implement Merge Sort*/
  35. void merge_sort(int x[], int end, int start) {
  36. int j = 0;
  37. const int size = start - end + 1;
  38. int mid = 0;
  39. int mrg1 = 0;
  40. int mrg2 = 0;
  41. int executing[MAX_ARY];
  42.  
  43. if(end == start)
  44. return;
  45.  
  46. mid = (end + start) / 2;
  47.  
  48. merge_sort(x, end, mid);
  49. merge_sort(x, mid + 1, start);
  50.  
  51. for(j = 0; j < size; j++)
  52. executing[j] = x[end + j];
  53.  
  54. mrg1 = 0;
  55. mrg2 = mid - end + 1;
  56.  
  57. for(j = 0; j < size; j++) {
  58. if(mrg2 <= start - end)
  59. if(mrg1 <= mid - end)
  60. if(executing[mrg1] > executing[mrg2])
  61. x[j + end] = executing[mrg2++];
  62. else
  63. x[j + end] = executing[mrg1++];
  64. else
  65. x[j + end] = executing[mrg2++];
  66. else
  67. x[j + end] = executing[mrg1++];
  68. }
  69. }
Add Comment
Please, Sign In to add comment