Advertisement
maycod23

Merge_Sort.cpp

May 19th, 2023
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. void merge(vector<int>& a, int Start, int Mid, int End)
  4. {
  5. vector<int> temp(End - Start + 1);
  6. int i = Start;
  7. int j = Mid + 1;
  8. int k = 0;
  9. while (i <= Mid && j <= End)
  10. {
  11. if (a[i] < a[j])//swap (a[i],a[j])//swapping
  12. {
  13. temp[k] = a[i];
  14. i++;
  15. }
  16. else
  17. {
  18. temp[k] = a[j];
  19. j++;
  20. }
  21. k++;
  22. }
  23. while (i <= Mid)
  24. {
  25. temp[k] = a[i];
  26. k++;
  27. i++;
  28. }
  29. while (j <= End)
  30. {
  31. temp[k] = a[j];
  32. k++;
  33. j++;
  34. }
  35. for ( i = Start; i <= End; i++)
  36. {
  37. a[i] = temp[i - Start];
  38. }
  39. }
  40. void mergesort(vector<int>& a, int start, int end)
  41. {
  42. if (start < end)
  43. {
  44. int mid = (start + end) / 2;
  45. mergesort(a, start, mid);
  46. mergesort(a, mid + 1, end);
  47. //assumed that these two functions had been already solved:: Sorted
  48. //Merge these sorted arrays into final one.
  49. merge(a, start, mid, end);
  50. }
  51. }
  52. int main()
  53. {
  54. int n; cin >> n;
  55. vector<int> a(n);
  56. for (int i = 0; i < n; i++)
  57. {
  58. cin >> a[i];
  59. }
  60. mergesort(a, 0, n - 1);
  61. for (int i = 0; i < n; i++)
  62. {
  63. cout << a[i] << " ";
  64. }
  65. return 0;
  66. }
  67.  
  68.  
  69.  
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement