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

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

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

题目

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

数据范围: 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;
  • 试试看最终的功能:

在这里插入图片描述


在这里插入图片描述

相关文章
|
JavaScript
如何在fastadmin中不依赖于tab写一个选项卡.
如何在fastadmin中不依赖于tab写一个选项卡.
367 0
|
2月前
|
数据采集 人工智能 搜索推荐
从SEO 到GEO:不用复杂技巧,这样做就对了
随着AI普及,GEO(生成式引擎优化)成为新趋势。与传统SEO优化关键词不同,GEO旨在让内容被AI模型选中并直接作为答案呈现。要提升GEO效果,需注重内容权威性、结构清晰、事实准确,并兼顾SEO基础,实现双轮驱动,在AI时代赢得曝光。
|
网络协议 API
检测指定TCP端口开放状态免费API接口教程
此API用于检测指定TCP端口是否开放,支持POST/GET请求。需提供用户ID、KEY、目标主机,可选指定端口(默认80)和地区(默认国内)。返回状态码、信息提示、检测主机、端口及状态(开放或关闭)。示例中ID和KEY为公共测试用,建议使用个人ID和KEY以享受更高调用频率。
271 14
|
存储 算法 Ubuntu
你可能不知道 xz 也是一种压缩格式,并且还相当惊艳
在现代计算中,文件压缩是节省存储空间和提高传输效率的关键技术。Linux 提供了多种压缩工具,如 `tar`、`zip`、`gzip`、`bzip2` 和 `xz`。本文重点介绍 `xz` 命令,探讨其高压缩比的优势及其基本用法,适合编程新手学习。
649 4
|
机器学习/深度学习 监控 数据可视化
关于运动员伤病预测数据集的探索(上)
关于运动员伤病预测数据集的探索
443 1
|
监控 Android开发 开发者
Android经典面试题之实战经验分享:如何简单实现App的前后台监听判断
本文介绍在Android中判断应用前后台状态的两种方法:`ActivityLifecycleCallbacks`和`ProcessLifecycleOwner`。前者提供精细控制,适用于需针对每个Activity处理的场景;后者简化前后台检测,适用于多数应用。两者各有优劣:`ActivityLifecycleCallbacks`更精确但复杂度高;`ProcessLifecycleOwner`更简便但可能在极端场景下略有差异。根据应用需求选择合适方法。
437 2
|
算法 IDE Linux
【CMake 小知识】CMake中的库目标命名和查找策略解析
【CMake 小知识】CMake中的库目标命名和查找策略解析
672 1
|
测试技术 块存储 开发者
阿里云块存储团队软件工程实践
本文介绍了阿里云团队软件工程实际开发流程,并简述了开发过程中遇到的一些问题。且附带案例,以及遇到案例中出现的情况应当如何应对。
|
前端开发 JavaScript UED
深度解析Qt背景设计:从基础到高级,从Widget到Quick(三)
深度解析Qt背景设计:从基础到高级,从Widget到Quick
551 0