Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- void merge(int array[], int first, int last) {
- int i = 0, j = 0;
- int result[last - first + 1];
- int mid = (first + last) / 2;
- while (first + i < mid && mid + j < last) {
- if (array[first + i] < array[mid + j]) {
- result[i + j] = array[first + i];
- i++;
- }
- else {
- result[i + j] = array[mid + j];
- j++;
- }
- }
- while (first + i < mid) {
- result[i + j] = array[first + i];
- i++;
- }
- while (mid + j < last) {
- result[i + j] = array[mid + j];
- j++;
- }
- for (int h = 0; h < i + j; h++) {
- array[first + h] = result[h];
- }
- }
- void mergeSort(int* array, int first, int last) {
- if (first < last - 1) {
- mergeSort(array, first, (first + last) / 2);
- mergeSort(array, (first + last) / 2, last);
- merge(array, first, last);
- }
- }
- int main() {
- int n;
- freopen("sort.in", "r", stdin);
- freopen("sort.out", "w", stdout);
- std::cin >> n;
- int arr[n];
- for (int i = 0; i < n; i++) {
- std::cin >> arr[i];
- }
- mergeSort(arr, 0, n);
- for (int i = 0; i < n; i++) {
- std::cout << arr[i] << " ";
- }
- fclose(stdout);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement