Подход: скопируйте элементы из 2D-массива в 1D-массив и затем скопируйте его обратно в 2D-массив после выполнения сортировки Bubble для 1D-массива.
#include <stdio.h>
int main()
{
//Here I have taken a matrix with 3 rows and 4 columns.
int matrix[3][4] = {{2,5,-9,4},
{7,10,8,1},
{-7,100,5,20}};
//step-1 copy the 2D array into a 1D array
int mat[3*4],i,j,k=0;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
mat[k] = matrix[i][j];
k++;
}
}
//step-2 perform the bubble sort
for(i=0;i<3*4-1;i++) //3*4<---no of elements
{
for(j=0;j<3*4-1-i;j++)
{
if(mat[j] > mat[j+1])
{
int temp = mat[j];
mat[j]=mat[j+1];
mat[j+1] = temp;
}
}
}
//step-3 place it back to the 2D array
int toggle = 1;
k=0;
for(j=0;j<4;j++)
{
if(toggle==1)
{
for(i=0;i<3;i++)
{
matrix[i][j] = mat[k];
k++;
}
toggle = 0;
}
else
{
for(i=3-1;i>=0;i--)
{
matrix[i][j] = mat[k];
k++;
}
toggle = 1;
}
}
//step-4 print the 2D matrix
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d ",matrix[i][j]);
}
printf("\n");
}
return 0;
}
Вывод:
-9 5 5 100
-7 4 7 20
1 2 8 10