C++程序 将给定矩阵排序
矩阵是计算机科学中很重要的数据结构之一,而对于矩阵中的元素进行排序,可以让我们更方便地对数据进行处理。本文将介绍如何使用C++对给定矩阵进行排序。
准备工作
我们假设我们有一个4×5的矩阵,如下所示:
3 | 4 | 6 | 1 | 2 |
---|---|---|---|---|
2 | 5 | 8 | 3 | 9 |
7 | 0 | 1 | 5 | 2 |
4 | 9 | 2 | 1 | 8 |
我们的目标是把矩阵中的所有元素按照从小到大的顺序进行排序。
我们先使用C++定义一个二维数组,并将给定的矩阵存储在其中:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int m = 4, n = 5;
int A[m][n] = {{3, 4, 6, 1, 2}, {2, 5, 8, 3, 9}, {7, 0, 1, 5, 2}, {4, 9, 2, 1, 8}};
}
对矩阵进行排序
我们可以使用C++标准库中的sort
函数对矩阵中的所有元素进行排序。sort
函数需要两个迭代器作为参数,第一个迭代器表示要排序的起始位置,第二个迭代器表示要排序的结束位置。因为我们的矩阵是一个二维数组,需要使用两个嵌套的循环来对每个元素进行排序。
sort(&A[0][0], &A[0][0] + m * n);
上述代码中,&A[0][0]
表示矩阵A中第一个元素的地址,&A[0][0] + m * n
表示矩阵A中最后一个元素的地址,即整个数组的末尾。这里需要注意的是,因为我们的矩阵是按照行优先存储的,所以要使用连续的地址来排序,即将二维数组转换为一维数组来排序。
排序后,矩阵中的元素如下所示:
0 | 1 | 1 | 2 | 2 |
---|---|---|---|---|
2 | 2 | 3 | 3 | 4 |
4 | 5 | 5 | 6 | 8 |
8 | 9 | 9 | 1 | 3 |
输出排序后的矩阵
为了方便观察结果,我们可以使用双重循环输出排序后的矩阵。
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
输出结果如下:
0 1 1 2 2
2 2 3 3 4
4 5 5 6 8
8 9 9 1 3
完整代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int m = 4, n = 5;
int A[m][n] = {{3, 4, 6, 1, 2}, {2, 5, 8, 3, 9}, {7, 0, 1, 5, 2}, {4, 9, 2, 1, 8}};
sort(&A[0][0], &A[0][0] + m * n);
for (int i = 0; i < m;i++) {
for (int j = 0; j < n; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
return 0;
}
结论
本文介绍了如何使用C++对给定矩阵进行排序。使用C++标准库中的sort
函数可以方便地对矩阵中的元素进行排序,注意要使用连续的地址来排序。排序后可以使用双重循环输出矩阵中的元素。