有序序列判断
题目链接: 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;
}