描述
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
数据范围: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。