📅  最后修改于: 2023-12-03 15:25:11.465000             🧑  作者: Mango
本文介绍如何编写一个 C++ 程序,对给定矩阵进行排序。我们将使用冒泡排序算法进行排序。同时,为了方便演示,我们将输入矩阵的元素作为命令行参数传递给程序。
冒泡排序算法是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就交换它们的位置。
以下是冒泡排序算法的C++实现:
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
以下是对给定矩阵进行排序的 C++ 程序:
#include <iostream>
using namespace std;
void bubbleSort(int arr[], int n);
int main(int argc, char* argv[]) {
// 从命令行参数中读取矩阵元素
int m = 3;
int n = 3;
int* arr = new int[m * n];
for (int i = 0; i < argc - 1; i++) {
arr[i] = atoi(argv[i + 1]);
}
// 对矩阵元素排序
for (int i = 0; i < m; i++) {
int* row = arr + i * n;
bubbleSort(row, n);
}
// 输出排序后的矩阵
for (int i = 0; i < m; i++) {
int* row = arr + i * n;
for (int j = 0; j < n; j++) {
cout << row[j] << " ";
}
cout << endl;
}
delete[] arr;
return 0;
}
void bubbleSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
该程序的输入为一个 $3\times3$ 的矩阵,例如:
$ ./sort_matrix 3 2 1 6 5 4 9 8 7
1 2 3
4 5 6
7 8 9
该程序的主函数中,首先从命令行参数中读取 $3\times3$ 的矩阵元素,然后对每一行的元素进行排序,最后输出排序后的矩阵。
排序过程使用了前文提到的冒泡排序算法。
本文介绍了如何编写一个 C++ 程序,对给定矩阵进行排序。我们使用了冒泡排序算法进行排序,同时演示了如何从命令行参数中读取矩阵元素。