题解 | #有序序列判断#

有序序列判断

https://www.nowcoder.com/practice/22e87f8a8d764a6582710f38d1b40c6e

#include <stdio.h>
#include <stdlib.h>

int main() {
    unsigned char N = 0;
    unsigned char* parray = NULL;

    /* 输入一个整数N(3≤N≤50) */
    scanf("%hhu", &N);

    if (N < 3 || N > 50)
        return -1;

    /* 动态分配内存 */
    parray = (unsigned char*)calloc(N, sizeof(unsigned char));
    if (!parray)
        return -1;

    /* 输入N个整数,用空格分隔N个整数(1≤val≤100) */
    for (unsigned char i = 0; i < N; i++) {
        scanf("%hhu", &parray[i]);
    }

    /**
     * 1 6 9 22 30
     * 1 1 1 1 1
     * 1 1 2 3 4
     * 1 1 0 2 3  ---> parray[1] > parray[2]  --->  unsorted
     */
    if (parray[0] <= parray[1]) {//升序或者值不变
        for (unsigned char i = 1; i < N - 1; i++) {
            if (parray[i] > parray[i + 1]) {//如果出现降序,则不是有序序列
                puts("unsorted");
                goto free_memory;
            }
        }

        /* 退出for循环说明是升序或者值不变 */
        puts("sorted");
    } else if (parray[0] >= parray[1]) {// 降序或者值不变
        for (unsigned char i = 1; i < N - 1; i++) {
            if (parray[i] < parray[i + 1]) {//如果出现升序,则不是有序序列
                puts("unsorted");
                goto free_memory;
            }
        }

        /* 退出for循环说明是升序或者值不变 */
        puts("sorted");
    }


free_memory:
    /* 释放内存 */
    free(parray);

    return 0;
}

全部评论

相关推荐

01-24 12:50
门头沟学院 C++
投票
菜狗二号:还有啥想的 指定国有行啊,去了就开始幸福美满的生活了,选华子不是折腾自己么,最终财富积累度是差不多的,但是幸福指数是相差甚远的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务