Изменить алгоритм быстрой сортировки так, чтобы сортировалось от наименьшего к наибольшему - C (СИ)
Формулировка задачи:
Здравствуйте! Есть программа сортировки случайных чисел в матрице методом быстрой сортировки. Сортирует элементы строк от найбольшего к найменьшему. Пожскажите как переделать что бы сортировало элементы столбцов от найменьшего к наибольшему, пожалуйста!
Код:
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iomanip>
#include <time.h>
using namespace std;
int tab[10][10];
int create()
{
cout<<"Massiv s elementami <100: ***"<<endl<<endl;
srand(32);
for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)
{
tab[a][b]=rand()%100;
cout<<setw(3)<<tab[a][b];
}
cout<<endl<<endl;
}
}
int quick_sort(int tab[10][10],int left,int right)
{
int a,b,med,zm;
for(a=0;a<10;a++)
{
b=((left+right)/2);
med=tab[a][b];
tab[a][b]=tab[a][right];
for(b=zm=left;b<right;b++)
{
if(tab[a][b]>right)
{
swap(tab[a][b],tab[a][zm]);
zm++;
}
}
tab[a][right]=tab[a][zm];
tab[a][zm]=med;
if(left<zm-1)
quick_sort(tab,left,zm-1);
if(zm+1<right)
quick_sort(tab,zm+1,right);
}
}
int main()
{
create();
cout<<"Otsorterovanyj massiv: "<<endl<<endl;
quick_sort(tab,0,9);
for(int a=0;a<10;a++)
{
for(int b=0;b<10;b++)
{
cout<<setw(3)<<tab[a][b];
}
cout<<endl<<endl;
}
return 0;
}Решение задачи: «Изменить алгоритм быстрой сортировки так, чтобы сортировалось от наименьшего к наибольшему»
textual
Листинг программы
void transpose(int matrix[5][5]) //либо int matrix[][5], либо int (*matrix)[5]
{
int t;
for(int i = 0; i < 5; ++i)
{
for(int j = i; j < 5; ++j)
{
t = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = t;
}
}
}
Объяснение кода листинга программы
В данном коде реализуется функция transpose, которая выполняет перестановку строк в квадратной матрице. Список действий в коде:
- Входной параметр функции — это двумерный массив (матрица) int matrix[5][5].
- Создается вспомогательная переменная t, которая будет использоваться для временного хранения значения.
- Запускается два вложенных цикла. Первый цикл идет по строкам от 0 до 4 (включительно), а второй — по столбцам от текущей строки до 4 (включительно).
- Во время каждой итерации внутреннего цикла, значение ячейки matrix[i][j] копируется в переменную t.
- Затем, значения ячеек matrix[i][j] и matrix[j][i] меняются местами.
- Значение t (которое изначально содержало значение ячейки matrix[i][j]) присваивается ячейке matrix[j][i].
- По завершении двух вложенных циклов, строки в матрице будут переставлены таким образом, что элементы одного столбца будут расположены последовательно в каждой строке. Стоит отметить, что данный код будет работать некорректно, если размер матрицы будет меньше 5х5.