如何用C语言实现矩阵(每行每列都按升序排列)的排序?
时间: 2024-11-12 08:17:34 浏览: 31
在C语言中,我们可以使用冒泡排序算法来实现矩阵(二维数组)的升序排列。对于每一行,我们采用嵌套循环的方式,将相邻元素两两比较并交换位置,直到整个行变得有序。然后对下一行重复这个过程,直到所有行都被排序。以下是简单的示例代码:
```c
#include <stdio.h>
void sort_matrix(int matrix[rows][cols], int rows, int cols) {
for (int i = 0; i < rows; i++) { // 遍历每一行
for (int j = 0; j < cols - 1; j++) { // 内层循环遍历当前行的元素
if (matrix[i][j] > matrix[i][j + 1]) { // 如果前一个元素大于后一个
// 交换两个元素
int temp = matrix[i][j];
matrix[i][j] = matrix[i][j + 1];
matrix[i][j + 1] = temp;
}
}
}
}
// 测试代码
int main() {
int matrix[4][4] = {{9, 5, 7, 1},
{3, 6, 8, 2},
{4, 1, 2, 5},
{7, 8, 6, 3}};
int rows = sizeof(matrix) / sizeof(matrix[0]);
int cols = sizeof(matrix[0]) / sizeof(matrix[0][0]);
printf("Before sorting:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
sort_matrix(matrix, rows, cols);
printf("After sorting:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
return 0;
}
阅读全文