Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector<int> a;
- void print() {
- for(auto x: a) cout << x << " ";
- cout << endl;
- }
- void merge(int l, int mid, int h) {
- cout<<"merging between "<<l<<" & "<<h<<" with mid "<<mid<<" : ";
- int i, j, k, n1, n2;
- n1 = mid - l + 1;
- n2 = h - mid;
- vector<int> b(n1), c(n2);
- for (i = 0; i < n1; i++)
- b[i] = a[l + i];
- for (j = 0; j < n2; j++)
- c[j] = a[mid + 1 + j];
- i = j = 0;
- k = l;
- while (i < n1 && j < n2) {
- if (b[i] <= c[j]) a[k++] = b[i++];
- else a[k++] = c[j++];
- }
- while (i < n1) a[k++] = b[i++];
- while (j < n2) a[k++] = c[j++];
- print();
- }
- void merge_sort(int l, int h) {
- int mid;
- if (l < h) {
- mid = (l + h) / 2;
- merge_sort(l, mid);
- merge_sort(mid + 1, h);
- merge(l, mid, h);
- }
- }
- int main() {
- int n;
- cout << "enter size & elements of the array \n";
- cin >> n;
- a.resize(n);
- for (auto &x: a) cin >> x;
- merge_sort(0, n - 1);
- cout << "\nmerge sorted array ";
- for (auto x: a) cout<<x<<" ";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment