多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 按升序对矩阵行进行排序,然后按降序对列进行排序 > 原文: [https://www.geeksforgeeks.org/sorting-rows-matrix-ascending-order-followed-sorting-columns-descending-order/](https://www.geeksforgeeks.org/sorting-rows-matrix-ascending-order-followed-sorting-columns-descending-order/) 给定矩阵,以升序对矩阵的行进行排序,然后以降序对列进行排序。 **示例**: ``` Input : a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}; Output : 7 8 9 4 5 6 1 2 3 Input : a[3][3] = {{3, 2, 1}, {9, 8, 7}, {6, 5, 4}}; Output : 7 8 9 4 5 6 1 2 3 ``` 1)遍历所有行,并使用简单数组排序以升序对行进行排序。 2)将矩阵转换为其[转置](https://www.geeksforgeeks.org/c-program-find-transpose-matrix/) 3)再次对所有行进行排序,但是这次以升序排列。 4)再次将矩阵转换为其[转置的](https://www.geeksforgeeks.org/c-program-find-transpose-matrix/) ## C++ ```cpp // C++ implementation to sort the rows // of matrix in ascending order followed by // sorting the columns in descending order #include <bits/stdc++.h> using namespace std; #define MAX_SIZE 10 // function to sort each row of the matrix // according to the order specified by  // ascending. void sortByRow(int mat[][MAX_SIZE], int n,                             bool ascending) {     for (int i = 0; i < n; i++)     {       if (ascending)             sort(mat[i], mat[i] + n);       else           sort(mat[i], mat[i] + n, greater<int>());     }       } // function to find transpose of the matrix void transpose(int mat[][MAX_SIZE], int n) {     for (int i = 0; i < n; i++)         for (int j = i + 1; j < n; j++)              // swapping element at index (i, j)              // by element at index (j, i)             swap(mat[i][j], mat[j][i]); } // function to sort the matrix row-wise // and column-wise void sortMatRowAndColWise(int mat[][MAX_SIZE],                                        int n) {     // sort rows of mat[][]     sortByRow(mat, n, true);     // get transpose of mat[][]     transpose(mat, n);     // again sort rows of mat[][] in descending     // order.     sortByRow(mat, n, false);     // again get transpose of mat[][]     transpose(mat, n); } // function to print the matrix void printMat(int mat[][MAX_SIZE], int n) {     for (int i = 0; i < n; i++) {         for (int j = 0; j < n; j++)             cout << mat[i][j] << " ";         cout << endl;     } } // Driver program to test above int main() {     int n = 3;     int mat[n][MAX_SIZE]  = {{3, 2, 1},                             {9, 8, 7},                              {6, 5, 4}};     cout << "Original Matrix:\n";     printMat(mat, n);     sortMatRowAndColWise(mat, n);     cout << "\nMatrix After Sorting:\n";     printMat(mat, n);     return 0; } ```