题解 | 有序序列判断

有序序列判断

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;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务