描述:
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
数据范围: 3 <=n <=50 序列中的值都满足1<= lev <= 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
思路:
针对这题,我的想法是用前一个数来减后一个数,然后根据结果大小来进行计数,两个数两两相减会产生n-1个数,所以如果说最后计数结果为n-1,那么就是说这个序列的趋势是一样的,也就是有序序列,这样就实现了判断
代码如下:
#include <stdio.h>
int main()
{
int i,arr[100],n,cnt1=0,cnt2=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}
for(i=0;i<n-1;i++)
{
if(arr[i]-arr[i+1]>=0)
cnt1++;//降序计数
else if(arr[i]-arr[i+1]<=0)
cnt2++;//升序计数
}
if(cnt1==n-1||cnt2==n-1)//一共n个数,两两相减的到n-1个结果
printf("sorted");
else
printf("unsorted");
}