题目描述
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。
输入描述:
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出描述:
输出为一行,如果序列有序输出sorted,否则输出unsorted。
解题思路
升序和降序都是有序,首先判断前两个a[0]和a[1]是升序还是降序,如果升序则继续判断之后的是升序,都是则输出sorted,同理降序也一样。
代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n+1];//放置索引越界,将数组定义的大一些
for(int i=0;i<n;++i)
cin>>a[i];//依次输入数组a中的元素
for(int j=2;j<n;++j)
{
if(a[1]>a[0])//判断开头是升还是降,进入if表示是升序
{
if(a[j]<a[j-1])//如果有不符合的
{
cout<<"unsorted";//则不是有序的
break;
}
else if(j==n-1)//一直到最后都是符合的
cout<<"sorted";//则整个数组都是升序,输出有序
}
else//如果开头是降序
{
if(a[j]>a[j-1])//有相邻元素不满足降序排列
{
cout<<"unsorted";//则不是有序的
break;
}
else if(j==n-1 )//一直到最后,整个数组都是降序的
cout<<"sorted";//输出有序
}
}
return 0;
}
京公网安备 11010502036488号