【每周例题】蓝桥杯 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;
}

  

posted @ 2024-04-08 16:11  山远尽成云  阅读(60)  评论(0)    收藏  举报