📜  C程序对矩阵的行进行排序(1)

📅  最后修改于: 2023-12-03 14:40:26.667000             🧑  作者: Mango

C程序对矩阵的行进行排序

本文介绍如何使用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程序对矩阵的行进行排序的介绍。完整代码如下: