vectorc++ sort降序
时间: 2024-09-20 21:01:46 浏览: 31
在C++中,`vector` 是一个动态数组容器,如果你想要对它里面的元素进行降序排序,你可以使用标准库中的 `sort` 函数配合自定义的比较函数来实现。这里是一个简单的例子:
```cpp
#include <algorithm> // 包含sort函数
#include <vector>
#include <iostream>
bool compare(int a, int b) {
return a > b; // 使用大于运算符返回true表示a应该排在b前面,即降序排列
}
int main() {
std::vector<int> vec = {5, 2, 9, 1, 7}; // 假设这是一个整数向量
// 对vec进行降序排序
std::sort(vec.begin(), vec.end(), compare);
for (const auto& element : vec) {
std::cout << element << " ";
}
return 0;
}
```
在这个例子中,`compare` 函数告诉 `sort` 函数元素应该按照降序排列。运行程序,你会看到输出的是从大到小排列的数字。
相关问题
vectorC++sort函数
好的,关于vector的sort函数,它是用来对vector容器中的元素进行排序的。sort函数默认是按照升序排序的,如果需要降序排序,则需要自定义比较函数。
下面是一个示例代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
return a > b; // 降序排序
}
int main() {
vector<int> v = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
sort(v.begin(), v.end()); // 默认升序排序
for (auto i : v) {
cout << i << " ";
}
cout << endl;
sort(v.begin(), v.end(), cmp); // 自定义降序排序
for (auto i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
1 1 2 3 3 4 5 5 5 6 9
9 6 5 5 5 4 3 3 2 1 1
```
#include <iostream> #include<vector> #include<algorithm> using namespace std; class mycompare { public: bool operator()(int s1, int s2) { return s1 > s2; } }; int main() { mycompare mycompare1; int n, m, c; vector<int> v1, v2; cout << "作业个数为:"; cin >> n; cout << "作业时间依次为:" << endl; for (int i = 0; i < n; i++) { cin >> c; v1.push_back(c); } sort(v1.begin(), v1.end(), mycompare1);//作业时间降序排序 cout << "处理机个数为:"; cin >> m; for (int i = 0; i < m; i++) v2.push_back(0); for (int i = 0; i < n; i++) { sort(v2.begin(), v2.end());//处理机完成作业时间升序排列 v2[0] += v1[i];//将作业分配给最先空闲的处理机,并将处理机完成作业时间加上相应作业时间 } cout << "最短处理机时间为:" << *v2.rbegin();
这段代码是一个贪心算法实现的作业调度问题。其主要功能是将一组作业分配给一些处理机,使得处理机完成所有作业的时间最短。
具体实现过程如下:
1. 输入作业个数n和每个作业的处理时间,将作业时间存入vector v1中。
2. 对v1进行降序排列,使得处理时间长的作业排在前面。
3. 输入处理机个数m,并将处理机的完成作业时间全部初始化为0,存入vector v2中。
4. 对v2进行升序排列,使得完成时间早的处理机排在前面。
5. 遍历v1中的每个作业,将其分配给完成时间最早的处理机,并将处理机的完成作业时间加上该作业的处理时间。
6. 输出v2中完成作业时间的最大值,即为所有作业完成的最短时间。
需要注意的是,在第5步中,为了实现贪心策略,我们选择了将作业分配给当前完成时间最早的处理机。这种做法并不一定能够得到全局最优解,但是在实际应用中,它能够得到较好的效果。
另外,代码中使用了函数对象mycompare,它定义了一个比较运算符,用于对vector进行排序。该函数对象的作用是将vector中的元素按照降序排列。
阅读全文