C++程序 将矩阵按行和列排序
本程序是用C++编写,用于实现将给定的矩阵按行和列排序的功能。矩阵排序在许多科学和工程应用中都是常见的问题。排序可以增强矩阵的可读性,并可以提高矩阵求解的效率。下面是示例代码,其中排序使用了快速排序算法。
#include <iostream>
#include <algorithm>
using namespace std;
void print_matrix(int arr[][5], int n, int m) {
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
void sort_rows(int arr[][5], int n, int m) {
for (int i = 0; i < n; i++) {
sort(arr[i], arr[i] + m);
}
}
void sort_cols(int arr[][5], int n, int m) {
for (int j = 0; j < m; j++) {
int temp[n];
for (int i = 0; i < n; i++) {
temp[i] = arr[i][j];
}
sort(temp, temp + n);
for (int i = 0; i < n; i++) {
arr[i][j] = temp[i];
}
}
}
int main() {
int arr[4][5] = {{5, 2, 9, 1, 3},
{8, 7, 6, 4, 2},
{4, 1, 6, 3, 8},
{2, 9, 7, 5, 1}};
cout << "The original matrix is:\n";
print_matrix(arr, 4, 5);
sort_rows(arr, 4, 5);
cout << "\nThe matrix sorted by rows is:\n";
print_matrix(arr, 4, 5);
sort_cols(arr, 4, 5);
cout << "\nThe matrix sorted by cols is:\n";
print_matrix(arr, 4, 5);
return 0;
}
代码解释
这个程序定义了三个函数和一个主函数。
print_matrix
函数用于在控制台上打印矩阵,其中参数arr
是一个二维整数数组,表示要输出的数组,n
和m
分别是数组的行数和列数。sort_rows
函数用于按行排序矩阵。它通过循环访问每一行,并使用STL的sort
算法对每一行进行排序。sort_cols
函数用于按列排序矩阵。它通过循环访问每一列,并将每一列的元素复制到一个临时数组中,在对临时数组进行排序后,将排序后的值逐一赋值回原始矩阵中。
主函数定义一个4×5的int类型二维数组,然后依次进行排序。在排序前和排序后都调用print_matrix
函数,以便检查排序的正确性。
结论
这个程序实现的功能是将矩阵按行和列排序。它定义了三个函数来完成任务,其中sort
算法用于简化排序过程。这个程序可以扩展到任意大小的矩阵,并且可以用于许多应用领域。