虽然可以for但是我很喜欢reverse
2026-03-30 05:08:56
发布于:甘肃
8阅读
0回复
0点赞
看代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n ;
cin >> n;
vector<int> arr(n);
for(int i = 0 ; i < n ; i++){
cin>>arr[i];
}
sort(arr.begin(),arr.end());
reverse(arr.begin(),arr.end());
for(int i = 0 ; i < n ; i++){
cout<<arr[i]<<' ';
}
}
这个题,答完上一道因该看到用sort排序来解决的大佬的题解了,这里只不过反转了一下
但是(BUT!)
如果不会反转怎么办
你也可以这么做:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n ;
cin >> n;
vector<int> arr(n);
for(int i = 0 ; i < n ; i++){
cin>>arr[i];
}
sort(arr.begin(),arr.end());
// reverse(arr.begin(),arr.end()); 你不会它
for(int i = n-1 ; i >=0; i--){
cout<<arr[i]<<' ';
}
}
这样的好处是我们没学过反转也可以很简单的倒序
怎么做的
假如排好序的数组是这样
1 2 3 4 5
如果我们正常输出因为查询是用下标所以输出是1 2 3 4 5
for(int i = 0 ; i < n ; i++){
cout<<arr[i];
}//i=0的时候arr[i]就是1
但是如果我们倒着遍历 (i--),那么一进去循环下标就是 n-1(下标从 0 开始)之后每次减1所以输出的是5 4 3 2 1
for(int i = n -1; i >=0 ; i--){
cout<<arr[i];
}//i=n-1的时候arr[i]就是最后一个数
注意:一下如果你写数组时没用vector或者string(如图)

(不要学我这样定义数组,就算迭代器没问题,定义的“arr”数组也会因为变量n出问题,因为数组里面要用“常量”)
那么要小心迭代器(.begin () /.end ())不能用于普通数组,普通数组要写成:
sort(arr,arr+n);
不要写成
sort(arr.begin(),arr.end());
不然报错别怪我
全部评论 1
点个赞吧爸爸妈妈们(我绝对不会拿去堵桥)
1周前 来自 甘肃
0







有帮助,赞一个