Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- void merge(int* array, int l, int mid, int r)
- {
- int ls = 0, rs = 0;
- int result[r - l + 1];
- while ((l + ls < mid + 1) && (mid + rs < r))
- {
- if (array[l + ls] < array[mid + rs + 1])
- {
- result[ls + rs] = array[l + ls];
- ls++;
- }
- else
- {
- result[ls + rs] = array[mid + 1 + rs];
- rs++;
- }
- }
- while (l + ls < mid + 1)
- {
- result[ls + rs] = array[l + ls];
- ls++;
- }
- while (mid + rs < r)
- {
- result[ls + rs] = array[mid + rs + 1];
- rs++;
- }
- for (int i = 0; i < ls + rs; ++i)
- array[l + i] = result[i];
- }
- void mergeSort(int* array, int n, int size)
- {
- for (int i = size; i < n; i *= 2)
- for (int j = 0; j < n - i; j += 2 * i)
- {
- if (j + 2 * i - 1 > n)
- merge(array, j, j + i - 1, n);
- else
- merge(array, j, j + i - 1, j + 2 * i - 1);
- }
- }
- int main()
- {
- int arr[2000];
- int result[2000];
- int count_tests;
- int size, count_mas;
- int arr_size;
- ifstream ifs("123.txt");
- ifs >> count_tests;
- ofstream out("results.txt");
- ;
- for (int i = 0; i < count_tests; ++i)
- {
- ifs >> count_mas;
- ifs >> size;
- arr_size = count_mas * size;
- for (int j = 0; j < arr_size; ++j)
- ifs >> arr[j];
- mergeSort(arr, arr_size, size);
- for (int k = 0; k < arr_size; ++k)
- {
- out << arr[k] << ' ';
- arr[k] = 0;
- }
- out << '\n';
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment