描述
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
数据范围:3≤n≤50 序列中的值都满足1≤val≤100。
输入描述
第一行输入一个整数N(3≤N≤50)。
第二行输入N个整数,用空格分隔N个整数。
输出描述
输出为一行,如果序列有序输出sorted,否则输出unsorted。
代码:
#include <stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
int arr[50]={0};
int i=0;
int flag1=0;//升序
int flag2=0;//降序
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
if(i>0)
{
if(arr[i]>arr[i-1])
{
flag1=1;//如果为降序,flag1一直为0
}
else
{
flag2=1;//如果为升序,flag2一直为0
}
}
}
if(flag1+flag2 == 1)
{
printf("sorted\n");
}
if(flag1+flag2 == 2)//如果数组元素一会升序一会降序,南无flag1和flag2都是1
{
printf("unsorted\n");
}
return 0;
}
代码思路:设置升序flag1=0和降序flag2=0,如果为数组升序,则只有flag1被置1;如果数组为降序,则只有flag2被置1。因此,如果数组有序,那么flag1+flag2=1,否则flag1+flag2=2。