📅  最后修改于: 2023-12-03 15:24:27.315000             🧑  作者: Mango
在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++表达式来定义它们。但是,对于更复杂的排序,您可能需要使用常规比较函数来更精确地控制排序。