📜  如何在 C++ 中对数组进行排序(1)

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

如何在 C++ 中对数组进行排序

在 C++ 中,我们可以使用标准模板库(STL)中的 sort 函数来对数组进行排序。sort 函数可以对各种类型的元素进行排序,包括整数、浮点数、字符串等等。

下面是一个对数组进行排序的基本示例代码:

#include <iostream>
#include <algorithm> // 必须包含头文件才能使用 sort 函数
using namespace std;

int main()
{
    int arr[] = {5, 3, 1, 6, 4, 2}; // 定义一个整数数组
    int len = sizeof(arr) / sizeof(arr[0]); // 获取数组长度

    sort(arr, arr + len); // 对数组进行排序

    for(int i = 0; i < len; i++) {
        cout << arr[i] << " "; // 输出排序后的数组元素
    }

    return 0; // 程序结束
}

在上面的示例代码中,我们首先定义了一个整数数组 arr,然后使用 sizeof(arr) / sizeof(arr[0]) 获取数组的长度。接下来,我们调用 sort 函数对数组进行排序。最后,我们使用 for 循环遍历数组并输出排序后的元素。

需要注意的是,sort 函数所需的头文件为 algorithm,必须包含该头文件才能使用该函数。

上面的示例代码可以输出以下结果:

1 2 3 4 5 6

除了基本的排序功能外,sort 函数还支持对自定义数据类型进行排序。如果要对自定义数据类型进行排序,需要实现比较函数(comparator function)来告诉 sort 函数如何比较这些数据类型。

下面是一个对自定义数据类型进行排序的示例代码:

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

struct Student {
    string name; // 姓名
    int age; // 年龄
    bool operator < (const Student& s) const { // 定义比较函数
        return age < s.age; // 按照年龄升序排序
    }
};

int main()
{
    vector<Student> students = {
        {"Alice", 20},
        {"Bob", 18},
        {"Charlie", 22},
        {"David", 19},
        {"Eric", 21}
    };

    sort(students.begin(), students.end()); // 对学生数组进行排序

    for(auto& s : students) {
        cout << s.name << " " << s.age << endl;
    }

    return 0;
}

在上面的示例代码中,我们定义了一个结构体 Student,其中包含姓名和年龄两个成员变量,同时实现了小于号运算符重载(operator <),指定了按照年龄升序排列。然后,我们定义了一个 std::vector 类型的学生数组并初始化。最后,我们调用 sort 函数对学生数组进行排序,遍历输出排序后的学生信息。

需要注意的是,当比较函数返回 true 时,按照升序排序,当比较函数返回 false 时,按照降序排序。如果不使用默认的从小到大排序,可以自定义比较函数,按照需要实现排序逻辑。