Advertisement
Adrita

sem 2 merge sort lab 3

Jul 8th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. int merge(int temp[], int start, int mid, int end)
  4. {
  5. int i, j, k;
  6. int size1 = mid - start + 1;
  7. int size2 = end - mid;
  8. int templeft[size1], tempright[size2];
  9. for (i = 0; i < size1; i++)
  10. {
  11. templeft[i] = temp[start + i];
  12. }
  13. for (j = 0; j < size2; j++)
  14. {
  15. tempright[j] = temp[mid + 1+ j];
  16. }
  17. i = 0;
  18. j = 0;
  19. k = start;
  20. while (i < size1 && j < size2)
  21. {
  22. if (templeft[i] <= tempright[j])
  23. {
  24. temp[k] = templeft[i];
  25. i++;
  26. }
  27. else
  28. {
  29. temp[k] = tempright[j];
  30. j++;
  31. }
  32. k++;
  33. }
  34. while (i < size1)
  35. {
  36. temp[k] = templeft[i];
  37. i++;
  38. k++;
  39. }
  40. while (j < size2)
  41. {
  42. temp[k] = tempright[j];
  43. j++;
  44. k++;
  45. }
  46. }
  47. int mergesort(int temp[], int start, int end)
  48. {
  49. if (start < end)
  50. {
  51. int mid = start+(end-start)/2;
  52. mergesort(temp, start, mid);
  53. mergesort(temp, mid+1, end);
  54. merge(temp, start, mid, end);
  55. }
  56. }
  57. int main()
  58. {
  59. int n;
  60. scanf("%d",&n);
  61. int b[n],i=0;
  62. for(i=0; i<n; i++)
  63. {
  64. scanf("%d",&b[i]);
  65. }
  66. mergesort(b,0,n-1);
  67. printf(" \n");
  68. for(i=0; i<n; i++)
  69. {
  70. printf("%d ",b[i]);
  71. }
  72.  
  73. return 0;
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement