Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- void merge(int arr[], int left, int mid, int right)
- {
- int size1 = mid - left + 1;
- int size2 = right - mid;
- int left_array[size1], right_array[size2];
- for (int i = 0; i < size1; i++)
- {
- left_array[i] = arr[left + i];
- }
- for (int i = 0; i < size2; i++)
- {
- right_array[i] = arr[mid + 1 + i];
- }
- int i = 0, j = 0, k = left;
- while (i < size1 && j < size2)
- {
- if (left_array[i] <= right_array[j])
- {
- arr[k] = left_array[i];
- i++;
- }
- else
- {
- arr[k] = right_array[j];
- j++;
- }
- k++;
- }
- while (i < size1)
- {
- arr[k] = left_array[i];
- i++;
- k++;
- }
- while (j < size2)
- {
- arr[k] = right_array[size2];
- j++;
- k++;
- }
- }
- void mergesort(int arr[], int left, int right)
- {
- if (left < right)
- {
- int mid = left + (right - left) / 2;
- mergesort(arr, left, mid);
- mergesort(arr, mid + 1, right);
- merge(arr, left, mid, right);
- }
- }
- main()
- {
- int size;
- cin >> size;
- int input_array[size];
- for (int i = 0; i < size; i++)
- {
- cin >> input_array[i];
- }
- mergesort(input_array, 0, size-1);
- for (int i = 0; i < size; i++)
- {
- cout << input_array[i] << "\t";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement