Переделать код для сортировки массива на код для сортировки двумерной матрицы - C (СИ)
Формулировка задачи:
возникла проблема, не могу переделать код для сортировки массива на код для сортировки двумерной матрицы. вот исходный код
пыталась его переделать на
но безуспешно.
Помогите пожалуйста разобраться
void sort(int A[],int n)
{int k,i,j;
for (i=1;i<n;i++)
{int v=A[i];
for(k=0;k<i && A[k]<v;k++);
for(int j=i-1;j>=k;j--)
A[j+1]=A[j];
A[k]=v;}
}
#include <stdio.h>
#include <math.h>
#include <conio.h>
# define n 6
int main()
{ int a[n];
int q,min,nom,s,per,vtr,o;
printf("Vvedite massiv iz 6 4isel");
for (q=0;q<n;q++)
scanf("%d",&a[q]);
int d=sizeof(a)/sizeof(int);
sort(a,d);
printf("\n Nash massiv");
for(q=0;q<n;q++)
printf("%d",a[q]);
getch();
}void sort(int A[20][20],int n)
{int k,i,j;
for(i=0;i<n;i++)
for (j=1;j<n;j++)
{int v=A[i][j];
for(k=0;k<j && A[i][k]<v;k++);
for(int q=j-1;j>=k;q--)
A[i][q+1]=A[i][q];
A[i][k]=v;}
}
#include <stdio.h>
#include <math.h>
#include <conio.h>
int main()
{ int a[20][20];
int i,j,n,o,str,w,;
printf("Vvedite n");
scanf("%d",&n);
printf("Vvedite matrix");
for (i=0;i<n;i++)//q
for(j=0;j<n;j++)//s
{scanf("%d",&a[i][j]);}
int d=sizeof(a)/sizeof(int);
sort(a,d);
printf(" \n matriza \n");
for (i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%d \t",a[i][j]);
printf("\n");}
getch();
}Решение задачи: «Переделать код для сортировки массива на код для сортировки двумерной матрицы»
textual
Листинг программы
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
void sort ( int );
void sort ( int mas [20][20] )
{
int i,j, tmp;
bool chk = true;
while ( chk )
{
chk = false;
for ( i = 0; i < 20; i++ )
{
for ( j = 0; j < 20; j ++)
{
if ( j == 20-1 && i == 20-1 )
break;
if ( i != 20-1 )
{
if ( mas [i][j] < mas [i+1][j] )
{
tmp = mas [i][j];
mas [i][j] = mas [i+1][j];
mas [i+1][j] = tmp;
chk = true;
}
}
}
}
}
}
int main(int argc, char* argv[])
{
int i,j, mas [20][20];
for ( i = 0; i < 20; i++ )
{
for ( j = 0; j < 20; j++ )
{
mas [i][j] = rand () % 9;
}
}
sort ( mas );
for ( i = 0; i < 20; i++ )
{
for ( j = 0; j< 20; j ++ )
{
cout << mas [i][j] << " ";
}
cout << endl;
}
getch ();
return 0;
}
//---------------------------------------------------------------------------
Объяснение кода листинга программы
Данный код реализует алгоритм сортировки пузырьком для двумерной матрицы. Список действий:
- Ввод матрицы: с помощью двух вложенных циклов заполняем матрицу случайными значениями от 0 до 8.
- Вызов функции сортировки: вызываем функцию sort(), передавая в нее матрицу.
- Сортировка матрицы: внутри функции sort() используется два вложенных цикла. Первый цикл перебирает строки матрицы, а второй - столбцы. Внутри второго цикла проверяется условие: если текущий элемент больше следующего, то меняем их местами и устанавливаем флаг chk в true.
- Вывод отсортированной матрицы: после сортировки выводим значения матрицы на экран.
- Ввод: программа ожидает нажатия клавиши для завершения работы.