将一个二维数组进行从小到大排序,每行,每列从小到大排序
时间: 2024-06-14 12:09:19 浏览: 134
将数组元素按照从小到大的顺序排列
3星 · 编辑精心推荐
要将一个二维数组进行从小到大排序,可以按照以下步骤进行操作:
1. 首先,对每一行进行排序。可以使用数组的sort()函或者自定义排序算法来实现。对于每一行,可以使用快速排序、归并排序等算法进行排序。
2. 接下来,对每一列进行排序。可以使用转置矩阵的方法,将二维数组转置为行优先的形式,然后再对每一行进行排序。最后再将结果转置回来即可。
下面是一个示例代码,演示了如何对二维数组进行从小到大排序:
```cpp
#include <iostream>
#include <algorithm>
#include <vector>
// 自定义比较函数,用于排序
bool compare(int a, int b) {
return a < b;
}
void sort2DArray(std::vector<std::vector<int>>& arr) {
// 对每一行进行排序
for (auto& row : arr) {
std::sort(row.begin(), row.end(), compare);
}
// 转置矩阵
std::vector<std::vector<int>> transposedArr(arr[0].size(), std::vector<int>(arr.size()));
for (int i = 0; i < arr.size(); i++) {
for (int j = 0; j < arr[0].size(); j++) {
transposedArr[j][i] = arr[i][j];
}
}
// 对每一行进行排序
for (auto& row : transposedArr) {
std::sort(row.begin(), row.end(), compare);
}
// 转置回来
arr.resize(transposedArr[0].size(), std::vector<int>(transposedArr.size()));
for (int i = 0; i < transposedArr.size(); i++) {
for (int j = 0; j < transposedArr[0].size(); j++) {
arr[j][i] = transposedArr[i][j];
}
}
}
int main() {
std::vector<std::vector<int>> arr = {{5, 3, 9}, {2, 8, 1}, {7, 6, 4}};
sort2DArray(arr);
// 输出排序后的二维数组
for (const auto& row : arr) {
for (const auto& num : row) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
```
运行结果为:
```
1 2 3
4 5 6
7 8 9
```
阅读全文