牛客网带你刷 · C语言 | 有序序列判断

简介: 问:输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)

在这里插入图片描述
啊我摔倒了..有没有人扶我起来学习....


@TOC


题目

问:输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)

数据范围: 3 ≤ n ≤ 50 序列中的值都满足 1 ≤ val ≤ 100

输入描述:
第一行输入一个整数N(3 ≤ N ≤ 50)
第二行输入N个整数,用空格分隔N个整数

输出描述:
输出为一行,如果序列有序输出sorted,否则输出unsorted

示例
输入
5
1 6 9 22 30

输出
sorted


解法

1. 确定思路

  • 首先要考虑到,如果数列中的每个数相等,也算是有序数列
  • 我们直接比较相邻元素,如果先增后减或者,先减后增这种不单调的数列就不是有序的,但是这样判断有点难度
  • 所以我们反过来考虑,我就假设你是一直增的,左边就是一直比右边小的,假如10个元素,比较其实就是9次,这9次都是左边小于等于右边。如果最终结果表明,这个次数小于9次,说明就不是升序的
  • 降序同理

2. 编写代码

  • 按照上述的思路,先设计主函数部分。用一个数组接收输入的序列
    int n;
    scanf("%d", &n);
    int arr[n];
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    int sz = sizeof(arr) / sizeof(arr[0]);
  • 为了代码可读性强,把判断是否有序的功能封装成一个函数,并判断返回值
    int result = judge_sorted(arr, sz);
    if (result)
        printf("sorted\n");
    else
        printf("unsorted\n");
  • 函数实现部分采用上述思路,假设数列是升序(或降序),用count记录比较次数(符合升序或降序才记录)
    int count1 = 0;
    int count2 = 0;
    for (int i = 0; i < sz - 1; i++)
    {
        if (arr[i] <= arr[i + 1])
            count1++;
        if (arr[i] >= arr[i + 1])
            count2++;
    }
  • 当比较完所有元素后就会退出循环,这时就该判断count是否满足次数要求了
    if ((count1 == (sz - 1)) || (count2 == (sz - 1)))
        return 1;
    else
        return 0;
  • 试试看最终的功能:

在这里插入图片描述


在这里插入图片描述

相关文章
|
1月前
|
C语言
你知道C语言中实现有序序列并序输出的2种方法吗?
你知道C语言中实现有序序列并序输出的2种方法吗?
|
4月前
|
C语言
c语言编程练习题:7-52 求简单交错序列前N项和
c语言编程练习题:7-52 求简单交错序列前N项和
28 0
|
4月前
|
C语言
c语言编程练习题:7-51 求奇数分之一序列前N项和
c语言编程练习题:7-51 求奇数分之一序列前N项和
30 0
|
3月前
|
C语言
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
[C语言][题]获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
25 0
|
4月前
|
C语言
c语言编程练习题:7-56 求给定精度的简单交错序列部分和
c语言编程练习题:7-56 求给定精度的简单交错序列部分和
32 0
|
4月前
|
C语言
c语言编程练习题:7-54 求阶乘序列前N项和
c语言编程练习题:7-54 求阶乘序列前N项和
27 0
|
4月前
|
C语言
c语言编程练习题:7-34 求分数序列前N项和
c语言编程练习题:7-34 求分数序列前N项和
30 0
c语言编程练习题:7-34 求分数序列前N项和
|
4月前
|
C语言
c语言编程练习题:7-32 求交错序列前N项和
c语言编程练习题:7-32 求交错序列前N项和
99 0
|
4月前
|
C语言
C语言二十二弹--有序数组合并
C语言二十二弹--有序数组合并
|
4月前
|
C语言
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
32 0