STL sort降序
时间: 2024-03-03 17:45:48 浏览: 100
STL(Standard Template Library)是C++标准库中的一个重要组成部分,其中包含了许多常用的数据结构和算法。sort函数是STL中的一个排序算法,用于对容器中的元素进行排序。
要实现降序排序,可以通过自定义比较函数来实现。比较函数需要满足以下条件:
1. 接受两个参数,表示待比较的元素。
2. 返回一个bool值,表示第一个参数是否应该排在第二个参数之前。
下面是一个示例代码,演示如何使用STL的sort函数进行降序排序:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
// 自定义比较函数,实现降序排序
bool compare(int a, int b) {
return a > b;
}
int main() {
std::vector<int> nums = {5, 2, 8, 1, 9};
// 使用sort函数进行降序排序
std::sort(nums.begin(), nums.end(), compare);
// 输出排序结果
for (int num : nums) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
```
运行以上代码,输出结果为:9 8 5 2 1,即按照降序排列的结果。
相关问题
声明一个整型数组,使用C++标准模板库(STL)中的查找算法find()进行数据的查找,然后应用排序算法sort()对数据进行升序和降序排序。
好的,以下是示例代码:
```c++
#include <iostream>
#include <algorithm> // 包含 find() 和 sort()
#include <vector> // 包含 vector 容器
using namespace std;
int main() {
// 声明一个整型数组
int arr[] = {1, 7, 3, 9, 5};
// 查找数组中是否存在元素 3
if (find(arr, arr + 5, 3) != arr + 5) {
cout << "3 is found in the array." << endl;
}
else {
cout << "3 is not found in the array." << endl;
}
// 将数组转换为 vector 容器
vector<int> vec(arr, arr + 5);
// 升序排序
sort(vec.begin(), vec.end());
cout << "Ascending order: ";
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
// 降序排序
sort(vec.begin(), vec.end(), greater<int>());
cout << "Descending order: ";
for (int i = 0; i < vec.size(); i++) {
cout << vec[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果:
```
3 is found in the array.
Ascending order: 1 3 5 7 9
Descending order: 9 7 5 3 1
```
.声明一个整型数组,使用C++标准模板库(STL)中的查找算法find()进行数据的查找,然后应用排序算法sort()对数据进行升序和降序排序。
在C++中,STL中的查找算法和排序算法分别位于<algorithm>头文件中的find()和sort()函数中。这里是一个例子:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
int arr[] = { 3, 5, 1, 4, 2 };
int size = sizeof(arr) / sizeof(arr[0]);
vector<int> v(arr, arr + size);
// 查找元素
int key = 4;
vector<int>::iterator it = find(v.begin(), v.end(), key);
if (it != v.end()) {
cout << "找到了 " << key << " 在数组中的位置是 " << (it - v.begin()) << endl;
} else {
cout << "没找到 " << key << endl;
}
// 升序排序
sort(v.begin(), v.end());
cout << "升序排序结果:";
for (int i = 0; i < size; i++) {
cout << v[i] << " ";
}
// 降序排序
sort(v.rbegin(), v.rend());
cout << "\n降序排序结果:";
for (int i = 0; i < size; i++) {
cout << v[i] << " ";
}
return 0;
}
```
输出结果为:
```
找到了 4 在数组中的位置是 3
升序排序结果:1 2 3 4 5
降序排序结果:5 4 3 2 1
```
在上面的代码中,我们首先使用了一个整型数组来初始化了一个vector对象,然后使用find()函数查找了数组中是否有值为4的元素。接着,我们使用sort()函数对vector中的元素进行了升序和降序排序,并输出了结果。
阅读全文