📅  最后修改于: 2023-12-03 14:40:26.667000             🧑  作者: Mango
本文介绍如何使用C语言对矩阵的行进行排序。假设我们有一个5行4列的矩阵,我们要按照每行的第一个元素进行排序。
首先,我们需要定义一个矩阵。我们可以使用二维数组来表示矩阵,定义如下:
#define ROWS 5
#define COLS 4
int matrix[ROWS][COLS] = {{7, 3, 5, 2}, {1, 9, 6, 4}, {8, 0, 10, 12}, {11, 13, 14, 15}, {19, 18, 17, 16}};
这里我们定义了一个5行4列的矩阵,并初始化了矩阵的元素。注意,我们可以使用#define
来定义矩阵的行数和列数,这样可以方便地修改矩阵的大小。
接下来,我们需要编写一个函数来对矩阵的行进行排序。这里我们使用插入排序算法来对每一行进行排序。函数的定义如下:
void sort_matrix(int matrix[][COLS], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 1; j < COLS; j++) {
int key = matrix[i][j];
int k = j - 1;
while (k >= 0 && matrix[i][k] > key) {
matrix[i][k+1] = matrix[i][k];
k--;
}
matrix[i][k+1] = key;
}
}
}
这里我们传入矩阵的二维数组和矩阵的行数。函数内部使用两重循环来遍历矩阵的每一行和每一列,然后使用插入排序算法对每一行进行排序。
最后,我们可以编写一个测试函数来测试上面的排序函数。测试函数的定义如下:
void print_matrix(int matrix[][COLS], int rows) {
for (int i = 0; i < rows; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", matrix[i][j]);
}
printf("\n");
}
}
int main() {
printf("Before sorting:\n");
print_matrix(matrix, ROWS);
sort_matrix(matrix, ROWS);
printf("After sorting:\n");
print_matrix(matrix, ROWS);
return 0;
}
这里我们定义了一个print_matrix
函数用来输出矩阵,然后在main
函数中依次输出排序前的矩阵、排序后的矩阵。运行结果如下:
Before sorting:
7 3 5 2
1 9 6 4
8 0 10 12
11 13 14 15
19 18 17 16
After sorting:
2 3 5 7
1 4 6 9
0 8 10 12
11 13 14 15
16 17 18 19
可以看到,我们成功对矩阵的行进行了排序。
到此为止,我们完成了C程序对矩阵的行进行排序的介绍。完整代码如下: