有序序列判断解析

175 阅读1分钟

有序序列判断

题目链接: BC122

描述

输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。

数据范围: 3≤n≤50 3≤n≤50 序列中的值都满足 1≤val≤100 1≤val≤100

输入描述:

第一行输入一个整数N(3≤N≤50)。

第二行输入N个整数,用空格分隔N个整数。

输出描述:

输出为一行,如果序列有序输出sorted,否则输出unsorted。

示例1

输入:

5
1 6 9 22 30

输出:

sorted

示例2

输入:

5
3 4 7 2 10

输出:

unsorted

示例3

输入:

5
1 1 1 1 1

输出:

sorted

思路

一直维持在升序 还是 降序 都是说明是有序序列 在序列中如果发现同时存在两个关系 那么就说明不是有序序列, 因此, 可以直接使用两个标志变量 flag1 flag2分别标志升序和降序 如果发现flag1 和 flag2 同时为1 那么不是有序序列


代码

#include <stdio.h>
​
int main()
{
  int n;
  scanf("%d",&n);
  int prev = 0;
  int cur = 0;
  for(int i=0;i<n;i++)
  {
    scanf("%d",&cur);
    if(i){
      if(cur>prev){
        flag1 = 1; //标志升序
      }
      else if(cur<prev){
        flag2 = 1; //标志降序
      }
    }
    prev = cur;
  }
  if(flag1&&flag2){
        printf('unsorted\n');
  }
  else{
    printf("sorted\n");
  }
  return 0;
}