题解 | 有序序列判断

有序序列判断

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

标题有序序列判断

#include<stdio.h>
int main()
{
    int n = 0;
    int arr[50] = { 0 };//存放原序列
    int arr1[50] = { 0 };//存放升序列
    int arr2[50] = { 0 };//存放降序列
    scanf("%d", &n);//获取n
    for (int i = 0; i < n; i++)//将序列放入arr,arr1,arr2中
    {
        scanf("%d", &arr[i]);
        arr1[i] = arr[i];
        arr2[i] = arr[i];
    }
    //升序
    for (int i = 0; i < n - 1; i++)
    {
        if (arr1[i] > arr1[i + 1])
        {
            int tmp = arr1[i];
            arr1[i] = arr1[i + 1];
            arr1[i + 1] = tmp;
        }

    }
    //降序
    for (int i = 0; i < n - 1; i++)
    {
        if (arr2[i] < arr2[i + 1])
        {
            int tmp = arr2[i];
            arr2[i] = arr2[i + 1];
            arr2[i + 1] = tmp;
        }
    }
    //判断升序和降序之后的序列和原序列是否一致,一致则有序
    int i = 0;
    for (i = 0; i < n; i++)
        {
            if (arr[i] != arr1[i] && arr[i] != arr2[i])//arr,arr1,arr2对应元素都不同,
                                                       //则肯定无序
            {
                printf("unsorted\n");//打印
                break;               //并终止循环
            }
        }
        if (i == n)//如果在上面循环中找不到对应元素都不同的,则原序列有序
        {
            printf("sorted\n");
        }
    return 0;
}
全部评论

相关推荐

头像
04-26 15:00
已编辑
算法工程师
点赞 评论 收藏
转发
头像
不愿透露姓名的神秘牛友
03-13 10:56
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务