JHJiban

Merge Sort

Dec 7th, 2020
511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.35 KB | None | 0 0
  1. //Jiban
  2. //192-15-13117
  3. #include<stdlib.h>
  4. void merge(int arr[], int l, int m, int r)
  5. {
  6. int i, j, k;
  7. int n1 = m - l + 1;
  8. int n2 = r - m;
  9. int Lt[n1], Rt[n2];
  10. for (i = 0; i < n1; i++)
  11. {
  12. Lt[i] = arr[l + i];
  13. }
  14. for (j = 0; j < n2; j++)
  15. {
  16. Rt[j] = arr[m + 1+ j];
  17. }
  18. i = 0;
  19. j = 0;
  20. k = l;
  21. while (i < n1 && j < n2)
  22. {
  23. if (Lt[i] <= Rt[j])
  24. {
  25. arr[k] = Lt[i];
  26. i++;
  27. }
  28. else
  29. {
  30. arr[k] = Rt[j];
  31. j++;
  32. }
  33. k++;
  34. }
  35. while (i < n1)
  36. {
  37. arr[k] = Lt[i];
  38. i++;
  39. k++;
  40. }
  41. while (j < n2)
  42. {
  43. arr[k] = Rt[j];
  44. j++;
  45. k++;
  46. }
  47. }
  48.  
  49. void mergeSort(int arr[], int l, int r)
  50. {
  51. if (l < r)
  52. {
  53. int m = l+(r-l)/2;
  54. mergeSort(arr, l, m);
  55. mergeSort(arr, m+1, r);
  56. merge(arr, l, m, r);
  57. }
  58. }
  59. void printArray(int A[], int size)
  60. {
  61. int i;
  62. for (i=0; i < size; i++)
  63. {
  64. printf("%d ", A[i]);
  65. }
  66. printf("\n");
  67. }
  68. int main()
  69. {
  70.     int sum=0,remainder;
  71.     int digitSum=0;
  72. int arr[1000], arr_size;
  73. printf("Enter Number of Elements in Array: ");
  74. scanf("%d", &arr_size);
  75. printf("Enter Elements of Array: ");
  76. for(int i = 0; i < arr_size; i++)
  77. {
  78. scanf("%d", &arr[i]);
  79. }
  80. mergeSort(arr, 0, arr_size - 1);
  81. printf("\nSorted Array is: ");
  82. printArray(arr, arr_size);
  83. for(int i=0; i<arr_size; i++)
  84. {
  85.    sum=sum+arr[i];
  86. }
  87. printf("Sum = %d\n", sum);
  88. while(sum>0)
  89. {
  90. remainder=sum%10;
  91. digitSum=digitSum+remainder;
  92. sum=sum/10;
  93. }
  94. printf("Digit(s) Sum: %d\n",digitSum);
  95. return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment