【每周例题】蓝桥杯 C++ 对称排序
对称排序
题目


题目分析
1.因为数字是对称交换,所以我们只需要判断前n/2项需不需要交换就好了
2.这里我采用了升序排序,你们也可以尝试降序排序
3.我们只需要排序好后再遍历一下整个数组,找出不符合排序的就输出NO就好了
代码
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
long long int num[100000];
for (int i = 1; i < n+1; i++)
{
cin >> num[i];
}
for (int i = 1; i < n+1; i++)
{
int A = i;
int B = n + 1 - i;
if (A > B)
{
break;
}
if (num[A] > num[B])
{
swap(num[A], num[B]);
}
}
for (int i = 2; i <= n; i++)
{
if (num[i] < num[i - 1])
{
cout << "NO" << endl;
return 0;
}
}
cout << "YES" << endl;
return 0;
}

浙公网安备 33010602011771号