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

  1. Входной параметр функции — это двумерный массив (матрица) int matrix[5][5].
  2. Создается вспомогательная переменная t, которая будет использоваться для временного хранения значения.
  3. Запускается два вложенных цикла. Первый цикл идет по строкам от 0 до 4 (включительно), а второй — по столбцам от текущей строки до 4 (включительно).
  4. Во время каждой итерации внутреннего цикла, значение ячейки matrix[i][j] копируется в переменную t.
  5. Затем, значения ячеек matrix[i][j] и matrix[j][i] меняются местами.
  6. Значение t (которое изначально содержало значение ячейки matrix[i][j]) присваивается ячейке matrix[j][i].
  7. По завершении двух вложенных циклов, строки в матрице будут переставлены таким образом, что элементы одного столбца будут расположены последовательно в каждой строке. Стоит отметить, что данный код будет работать некорректно, если размер матрицы будет меньше 5х5.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы