题解 | 有序序列判断
有序序列判断
https://www.nowcoder.com/practice/22e87f8a8d764a6582710f38d1b40c6e
#include <stdio.h>
#define MAX_N 50 // 定义数组最大长度,适配题目n≤50的要求
int main()
{
int n;
// 第一步:输入序列长度n
scanf("%d", &n);
// 第二步:定义数组并输入n个整数
int arr[MAX_N];
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
// 第三步:初始化升序、降序标记(1表示有序,0表示无序)
int is_asc = 1; // 标记是否从小到大有序
int is_desc = 1; // 标记是否从大到小有序
// 第四步:遍历数组验证有序性(i到n-2即可,避免arr[i+1]越界)
for (int i = 0; i < n - 1; i++)
{
if (arr[i] > arr[i + 1])
{
// 有元素比下一个大,升序不成立
is_asc = 0;
}
if (arr[i] < arr[i + 1])
{
// 有元素比下一个小,降序不成立
is_desc = 0;
}
}
// 第五步:根据标记输出结果
if (is_asc || is_desc)
{
printf("sorted\n");
} else
{
printf("unsorted\n");
}
return 0;
}


查看5道真题和解析