题目的主要信息:
- 输入5个整数,使用 vector 进行存储,使用 STL 排序算法对元素进行排序(从大到小)
- 再使用 STL 遍历算法输出元素
具体做法:
这道题主要是使用STL的库函数,我们要在头部添加algorithm库。
对于数组排序,我们有sort函数,可以直接从首(第一个参数)排到尾(第二个参数),但是sort函数排出来是从小到大,不符合题目要求的从大到小,因此我们需要在第三个参数添加 greater<int>()
。
对于数组遍历,我们有for_each函数,可以从首(第一个参数)到尾(第二个参数),取出每一个元素,放到第三个参数所表示的函数,我们在该函数里写打印语句即可。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void print(int x){ //打印x的变量
cout << x << " ";
}
int main() {
int num;
vector<int> v;
for (int i = 0; i < 5; i++) { //输入
cin >> num;
v.push_back(num);
}
sort(v.begin(), v.end(), greater<int>()); //从大到小排序
for_each(v.begin(), v.end(), print); //取出每个元素送入print函数中
return 0;
}
复杂度分析:
- 时间复杂度:O(nlog2n),其中n为数组长度,排序属于快排,复杂度为O(nlog2n),遍历的复杂度为O(n)
- 空间复杂度:O(1),常数空间