Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <algorithm>
- #include <iomanip>
- //В файле содержится двумерный массив размерностью 𝑛 × 𝑛. В новый файл вывести отсортированный массив
- using namespace std;
- //Четные строки по убыванию, нечетные по возрастанию с помощью сортировки Шелла с шагом 𝑑 = 𝑁 / 2.
- void shell(int **a, int n, int z) //сортировка Шелла
- {
- int d = n / 2;
- while (d > 0)
- {
- for (int i = 0; i < n - d; i++)
- {
- int j = i;
- while (j >= 0 && (a[z][j] > a[z][j + d] && z % 2 || a[z][j] < a[z][j + d] && z % 2 == 0))
- {
- swap(a[z][j], a[z][j + d]);
- j--;
- }
- }
- d /= 2;
- }
- }
- int main()
- {
- ifstream in("in.txt");
- ofstream out("out.txt");
- int n;
- cout << "Enter array's dimension: ";
- cin >> n;
- int** a = new int*[n];
- for(int i = 0; i < n; i++)
- {
- a[i] = new int[n];
- for(int j = 0; j < n; j++)
- {
- in >> a[i][j];
- }
- }
- for(int i = 0; i < n; i++)
- {
- shell(a, n, i);
- }
- for(int i = 0; i < n; i++, out << endl)
- {
- for(int j = 0; j < n; j++)
- {
- out << a[i][j] << " ";
- }
- }
- }
Add Comment
Please, Sign In to add comment