有序数列判断(牛客网BC96)

题目描述

输入一个整数序列判断是否为有序序列,有序,指针序列中的整数从小到大排序或者从大到小排序(相同的元素也视为有序)

数据范围: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

如果完成了这些,那么恭喜你

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值