题目描述
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。
输入描述:
第一行输入一个整数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;
}