1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #include<bits/stdc++.h> using namespace std;
void merge_sort(vector<int> &a, int l, int r) { if(l >= r - 1) { return; } int mid = l + r >> 1; merge_sort(a, l, mid), merge_sort(a, mid, r); vector<int> temp(r - l + 1); int p = 0, i = l, j = mid; while(i < mid && j < r) { if(a[i] < a[j]) { temp[p++] = a[i++]; } else { temp[p++] = a[j++]; } } while(i < mid) { temp[p++] = a[i++]; } while(j < r) { temp[p++] = a[j++]; } for (int i = l; i < r; i ++ ) { a[i] = temp[i - l]; } }
int main() { int n; cin >> n; vector<int> a(n); for(int i = 0; i < n; i ++ ) { cin >> a[i]; } merge_sort(a, 0, n); for(int i = 0; i < n; i ++ ) { cout << a[i] << " "; } return 0; }
|