1. 题目描述——BC96-有序序列判断
牛客网OJ题链接
描述:输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
示例1
输入:
5
1 6 9 22 30
输出:
sorted
示例2
输入:
5
3 4 7 2 10
输出:
unsorted
示例3
输入:
5
1 1 1 1 1
输出:
sorted
2. 思路
就是分两种情况,一个是升序,一个是降序,我们需要两个标识,一个标记是升序flagUp ,一个标记是降序flagDown ,
最后判断这俩标记之和,
有序的情况只能是有一个为1 ,就是要么降序要么升序,
还有一种情况就是全相等,这种情况就是两个1都不进去,flagUp+flagDown = 0;
所以最后的判断条件就是<2
因为要是既有大于情况又有小于情况说明她是无序的
3. 代码实现
#include <stdio.h>int main() {int n = 0;scanf("%d", &n);int arr[100] = { 0 };int i = 0;for (i = 0; i < n; i++) {scanf("%d", &arr[i]);}int flagUp = 0;int flagDown = 0;for (i = 0; i < n - 1; i++) {if (arr[i] < arr[i + 1]) {flagUp = 1;}if (arr[i] > arr[i + 1]) {flagDown = 1;}}if (flagUp + flagDown <2) {//只要有一个满足是1就是有序的,所以有序的情况是 1 升序或者降序 0 数组全相等, 2就是有大于的情况也有小于的情况printf("sorted");}else {printf("unsorted");}return 0;
}