用c++写一段代码:题目描述 一个二维的方阵,比如 1 2 3 4 5 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 将主对角线上的元素从小到大输出 输入 一个整数N<=10 下面N行为N*N的二维矩阵的数据 输出 将主对角线上的元素从小到大输出,两个数之间用空格隔开
时间: 2024-01-02 17:03:05 浏览: 60
以下是使用二维数组和选择排序来解决这个问题的C++代码:
```c++
#include <iostream>
using namespace std;
const int MAXN = 15;
int matrix[MAXN][MAXN];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> matrix[i][j];
for (int i = 0; i < n; i++)
{
int minIndex = i;
for (int j = i + 1; j < n; j++)
{
if (matrix[j][j] < matrix[minIndex][minIndex])
minIndex = j;
}
if (minIndex != i)
{
for (int j = 0; j < n; j++)
swap(matrix[i][j], matrix[minIndex][j]);
}
cout << matrix[i][i] << " ";
}
cout << endl;
return 0;
}
```
该算法的时间复杂度为O(N^3),其中N为二维矩阵的大小。该算法的核心思想是遍历主对角线上的每个元素,然后在该元素所在的列中选择一个最小的元素,将该元素与当前主对角线上的元素交换位置,并输出交换后的主对角线上的元素。重复上述过程直到遍历完整个主对角线为止。
阅读全文