Отсортировать матрицу насквозь по столбикам quick sort - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здраствуйте нужна помощь!Нужно остортировать матрицу насквозь quick sort Пример до сортировки: 4 7 2 2 9 0 3 1 5 После: 0 2 5 1 3 7 2 4 9 Есть сортировка для вектора, когда хочу сделать для матрицы сортирует только по 1 столбику а надо всю матрицю насквозь
void SortQuick1x(int L,int R){
    int x,temp;
    int n=5,m=5;
    int B[n][m];
  
    x=B[(L+R)/2];
    int i=L,j=R;
 
    while(i<=j){
        while(B[i]x) j--;
 
        if(i<=j){
            temp=B[i];
            B[i]=B[j];
            B[j]=temp;
            i++;
            j--;
        }
    }
    if(L

		

Решение задачи: «Отсортировать матрицу насквозь по столбикам quick sort»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
 
#define n 3
#define m 3
 
int B[m][n] =
{
    {4, 7, 2},
    {2, 9, 0},
    {3, 1, 5}   
};
 
 
void SortQuick1x(int L,int R){
    int x,temp, midd;
  
    midd = (L+R)/2;
    x=B[midd%m][midd/m];
    int i=L,j=R;
 
    while(i<=j){
        while(B[i%m][i/m]<x) i++;
        while(B[j%m][j/m]>x) j--;
 
        if(i<=j){
            temp=B[i%m][i/m];
            B[i%m][i/m]=B[j%m][j/m];
            B[j%m][j/m]=temp;
            i++;
            j--;
        }
    }
    if(L<j) SortQuick1x(L,j);
    if(i<R) SortQuick1x(i,R);
 
 
}
 
int main () 
{
    int i, j;
    
    
    SortQuick1x(0, m*n - 1);
    
    for(i = 0; i < m; i++)
    {
        for(j = 0; j < n; j++)
            printf("%3d", B[i][j]);
        printf("\n");
    }
    return 0;
}

Объяснение кода листинга программы

В этом коде используется алгоритм быстрой сортировки для сортировки матрицы. Вот список действий, которые происходят в коде:

  1. Включаются необходимые заголовочные файлы.
  2. Определяются значения для двух констант: n (количество строк в матрице) и m (количество столбцов в матрице).
  3. Создается матрица B размером m x n и инициализируется значениями.
  4. Определяется функция SortQuick1x, которая реализует алгоритм быстрой сортировки для одномерного массива.
  5. В функции main() создаются переменные i и j для использования в цикле.
  6. Вызывается функция SortQuick1x с аргументами 0 и mn-1, где 0 - это номер первого элемента матрицы, а mn-1 - это номер последнего элемента матрицы.
  7. В функции main() выводится отсортированная матрица B с помощью двух вложенных циклов.
  8. Функция main() возвращает 0, что означает успешное завершение программы.

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

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