Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int a[1000], c[1000], d[1000];
- void merge(int l, int m, int r) {
- for (int i = 0; i < m - l + 1; i++) {
- c[i] = a[l + i];
- }
- for (int i = 0; i < r - (m + 1) + 1; i++) {
- d[i] = a[m + 1 + i];
- }
- int i = 0, j = 0;
- for (int k = l; k <= r; k++) {
- if (i >= m - l + 1) {
- a[k] = d[j];
- j++;
- }
- else if (j >= r - (m + 1) + 1) {
- a[k] = c[i];
- i++;
- }
- else if (c[i] < d[j]) {
- a[k] = c[i];
- i++;
- }
- else {
- a[k] = d[j];
- j++;
- }
- }
- }
- void mergeSort(int l, int r) {
- if (r - l > 0) {
- int m = (r + l) / 2;
- mergeSort(l, m);
- mergeSort(m + 1, r);
- merge(l, m, r);
- }
- }
- int main() {
- int n;
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> a[i];
- }
- mergeSort(0, n - 1);
- for (int i = 0; i < n; i++) {
- cout << a[i] << ' ';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment