题目描述
输入一个整数序列判断是否为有序序列,有序,指针序列中的整数从小到大排序或者从大到小排序(相同的元素也视为有序)
数据范围:3<=n<=50,序列中的值都满足1<=val<=100
输入描述
第一行输入一个整数N(3<=N<=50)
第二行输入N个整数,用空格分隔N个整数
输出描述
输出为一行,如果序列有序输出sorted,否则输出unsorted
读题我们可知,我们要干的第一步是输入数据,输入一个整数N,(注意整型,初始化)scanf就可以了,输入一个数组,我们可以输入一个变长数组(eg:arr[n]) 但是有的编译器可能不认,这时候题目中给出了数据范围,我们可以直接int arr[50]={0};(变长数组不可以初始化哦~hsa)
第二步就是判断数组是否为有序
有序无非就两种,一种是升序,一种是降序,这个时候,我们设置两个标记flag1和flag2
如果数组中全是升序,那flag1=1,flag2=0;如果全是降序,那flag2=1,flag1=0;
如果一个数组中既有升序又有降序,那flag1=1,flag2=1
我们不难看出flag1+flag2=2是乱序数组独有的标记
接下来我们对数组中每相邻的两个元素进行比较,判断升序还是降序
因为要对每相邻的两个元素进行比较,需要用到循环结构,注意只需要判断N-1次即可
第三步输出
以flag1+flag2为条件,用if语句判断是否为有序,有序输出sorted,无序输出unsorted
如果完成了这些,那么恭喜你