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