题目的主要信息:

  • 输入5个整数,使用 vector 进行存储,使用 STL 排序算法对元素进行排序(从大到小)
  • 再使用 STL 遍历算法输出元素

具体做法:

这道题主要是使用STL的库函数,我们要在头部添加algorithm库。

对于数组排序,我们有sort函数,可以直接从首(第一个参数)排到尾(第二个参数),但是sort函数排出来是从小到大,不符合题目要求的从大到小,因此我们需要在第三个参数添加 greater<int>()alt

对于数组遍历,我们有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)O(nlog_2n)O(nlog2n),其中nnn为数组长度,排序属于快排,复杂度为O(nlog2n)O(nlog_2n)O(nlog2n),遍历的复杂度为O(n)O(n)O(n)
  • 空间复杂度:O(1)O(1)O(1),常数空间