CJamie

mergesort

Mar 24th, 2022
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. vector<int> a;
  4. void print() {
  5. for(auto x: a) cout << x << " ";
  6. cout << endl;
  7. }
  8. void merge(int l, int mid, int h) {
  9. cout<<"merging between "<<l<<" & "<<h<<" with mid "<<mid<<" : ";
  10. int i, j, k, n1, n2;
  11. n1 = mid - l + 1;
  12. n2 = h - mid;
  13. vector<int> b(n1), c(n2);
  14. for (i = 0; i < n1; i++)
  15. b[i] = a[l + i];
  16. for (j = 0; j < n2; j++)
  17. c[j] = a[mid + 1 + j];
  18. i = j = 0;
  19. k = l;
  20. while (i < n1 && j < n2) {
  21. if (b[i] <= c[j]) a[k++] = b[i++];
  22. else a[k++] = c[j++];
  23. }
  24.  
  25. while (i < n1) a[k++] = b[i++];
  26.  
  27. while (j < n2) a[k++] = c[j++];
  28.  
  29. print();
  30. }
  31. void merge_sort(int l, int h) {
  32. int mid;
  33. if (l < h) {
  34. mid = (l + h) / 2;
  35. merge_sort(l, mid);
  36. merge_sort(mid + 1, h);
  37. merge(l, mid, h);
  38. }
  39. }
  40. int main() {
  41. int n;
  42. cout << "enter size & elements of the array \n";
  43. cin >> n;
  44. a.resize(n);
  45. for (auto &x: a) cin >> x;
  46. merge_sort(0, n - 1);
  47. cout << "\nmerge sorted array ";
  48. for (auto x: a) cout<<x<<" ";
  49. return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment