📌  相关文章
📜  如何在C++中使用STL按降序对数组进行排序?(1)

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

如何在C++中使用STL按降序对数组进行排序?

在C++中,我们可以使用STL提供的sort()函数对数组进行排序。sort()函数默认按升序排列,但我们可以通过定义自己的比较函数来改变排序方式。下面是一个按降序排列数组的示例:

#include <iostream>
#include <algorithm>

using namespace std;

bool compare(int a, int b) {
    return a > b;
}

int main() {
    int arr[] = {3, 1, 4, 2, 8, 5, 7, 6};
    int n = sizeof(arr) / sizeof(arr[0]);

    sort(arr, arr + n, compare);

    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }

    return 0;
}

输出结果为:

8 7 6 5 4 3 2 1

在这个示例中,我们定义了一个名为compare()的比较函数。这个函数接受两个整数作为参数,并返回一个布尔值。如果第一个参数大于第二个参数,compare()返回true,反之返回false。在sort()函数中,我们使用compare()函数作为第三个参数来改变排序方式。在这里,我们使用>运算符来实现降序排列。

我们还可以使用C++11中引入的Lambda表达式来定义比较函数。下面是相同排序示例的Lambda版本:

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
    int arr[] = {3, 1, 4, 2, 8, 5, 7, 6};
    int n = sizeof(arr) / sizeof(arr[0]);

    sort(arr, arr + n, [](int a, int b) { return a > b; });

    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }

    return 0;
}

输出结果与前一个示例相同。

Lambda表达式比比较函数更简洁,特别是对于简单排序。它们还提供了更大的灵活性,因为我们可以使用任何合法的C++表达式来定义它们。但是,对于更复杂的排序,您可能需要使用常规比较函数来更精确地控制排序。