C++程序 在二维数组中按行排序

C++程序 在二维数组中按行排序

C++中,我们经常会使用二维数组来存储数据。如果想要按行进行排序,可以采用以下方法。

方法一:手写排序函数

我们可以手写一个排序函数来对二维数组中的每一行进行排序。具体代码如下:

#include <algorithm>
#include <iostream>
using namespace std;

bool cmp(int a, int b) {
    return a < b;
}

void sortRow(int **matrix, int row, int col) {
    for (int i=0; i<row; i++) {
        sort(matrix[i], matrix[i]+col, cmp);
    }
}

int main() {
    int row = 3, col = 4;
    int **matrix = new int*[row];
    for (int i=0; i<row; i++) {
        matrix[i] = new int[col];
        for (int j=0; j<col; j++) {
            matrix[i][j] = rand()%10;
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;

    sortRow(matrix, row, col);

    for (int i=0; i<row; i++) {
        for (int j=0; j<col; j++) {
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }

    for (int i=0; i<row; i++) {
        delete[] matrix[i];
    }
    delete[] matrix;
    return 0;
}

在以上代码中,我们手写了一个排序函数cmp来比较两个元素的大小,并使用sort函数对每一行进行排序。

方法二:使用vector

我们还可以使用C++中的STL库vector来实现对二维数组中每一行的排序。具体代码如下:

#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;

bool cmp(int a, int b) {
    return a < b;
}

void sortRow(vector<vector<int>> &matrix) {
    for (auto &row : matrix) {
        sort(row.begin(), row.end(), cmp);
    }
}

int main() {
    int row = 3, col = 4;
    vector<vector<int>> matrix(row, vector<int>(col, 0));
    for (int i=0; i<row; i++) {
        for (int j=0; j<col; j++) {
            matrix[i][j] = rand()%10;
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;

    sortRow(matrix);

    for (auto row : matrix) {
        for (auto num : row) {
            cout << num << " ";
        }
        cout << endl;
    }
    return 0;
}

在以上代码中,我们使用vector<vector>来代替二维数组,然后依次对每一行进行排序。

方法三:使用自定义比较函数

除了手写排序函数和使用vector外,我们还可以使用STL库的sort函数的一个重载形式,使用自定义比较函数来比较每一行的大小。具体代码如下:

#include <algorithm>
#include <iostream>
using namespace std;

bool cmp(const vector<int> &row1, const vector<int> &row2) {
    return row1[0] < row2[0];
}

void sortRow(vector<vector<int>> &matrix) {
    sort(matrix.begin(), matrix.end(), cmp);
}

int main() {
    int row = 3, col = 4;
    vector<vector<int>> matrix(row, vector<int>(col, 0));
    for (int i=0; i<row; i++) {
        for (int j=0; j<col; j++) {
            matrix[i][j] = rand()%10;
            cout << matrix[i][j] << " ";
        }
        cout << endl;
    }
    cout << endl;

    sortRow(matrix);

    for (auto row : matrix) {
        for (auto num : row) {
            cout << num << " ";
        }
        cout << endl;
    }
    return 0;
}

在以上代码中,我们使用了一个自定义的比较函数cmp,每次比较每一行的第一个元素的大小,然后使用sort函数来对每一行进行排序。

结论

以上是三种在C++中对二维数组按行排序的方法,分别是手写排序函数、使用vector和使用自定义比较函数。在实际使用中,可以根据具体情况选择不同的方法来实现排序操作。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例