📜  对给定矩阵进行排序的 C++ 程序(1)

📅  最后修改于: 2023-12-03 15:25:11.465000             🧑  作者: Mango

排序矩阵的 C++ 程序

本文介绍如何编写一个 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++ 程序,对给定矩阵进行排序。我们使用了冒泡排序算法进行排序,同时演示了如何从命令行参数中读取矩阵元素。