Изменить алгоритм быстрой сортировки так, чтобы сортировалось от наименьшего к наибольшему - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д