Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>//bug
- #include <fstream>
- #include <vector>
- #include <algorithm>
- #include <iomanip>
- //В файле содержится двумерный массив размерностью 𝑛 × 𝑛. В новый файл вывести отсортированный массив
- using namespace std;
- //Диагонали, параллельные главной по возрастанию с помощью пирамидальной сортировки.
- void downHeap(int a[], long k, long n) {
- // процедура просеивания следующего элемента
- // До процедуры: a[k+1]...a[n] - пирамида
- // После: a[k]...a[n] - пирамида
- int new_elem;
- long child;
- new_elem = a[k];
- while(k <= n/2) { // пока у a[k] есть дети
- child = 2*k;
- // выбираем большего сына
- if( child < n && a[child] < a[child+1] )
- child++;
- if( new_elem >= a[child] ) break;
- // иначе
- a[k] = a[child]; // переносим сына наверх
- k = child;
- }
- a[k] = new_elem;
- }
- void heapSort(T a[], long size) {
- long i;
- T temp;
- // строим пирамиду
- for(i=size/2-1; i >= 0; i--) downHeap(a, i, size-1);
- // теперь a[0]...a[size-1] пирамида
- for(i=size-1; i > 0; i--) {
- // меняем первый с последним
- temp=a[i]; a[i]=a[0]; a[0]=temp;
- // восстанавливаем пирамидальность a[0]...a[i-1]
- downHeap(a, 0, i-1);
- }
- }
- 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