牛客网带你刷 · 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;
  • 试试看最终的功能:

在这里插入图片描述


在这里插入图片描述

相关文章
|
8月前
|
存储 算法 程序员
【Leetcode 程序员面试金典 01.01】判定字符是否唯一 —— 位运算|哈希表
可以使用哈希表或位运算来解决此问题:由题可知s[i]仅包含小写字母,int[26]即能表示字符的出现次数;
|
算法 搜索推荐 程序员
C语言第十四练——请输入一个数的逆序数
C语言第十四练——请输入一个数的逆序数
128 0
|
7月前
|
C语言
C语言学习记录——鹏哥二分法查找数组中元素 复习整理
C语言学习记录——鹏哥二分法查找数组中元素 复习整理
34 0
|
8月前
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
【一刷《剑指Offer》】面试题 10:二进制中 1 的个数
|
C语言
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
震惊C语言数组界|原来在有序的24亿个数字元素查找一个数字只需要找12亿次
67 0
|
存储 算法 C语言
【C语言蓝桥杯每日一题】—— 递增序列
递增序列🙌 对于一个字母矩阵,我们称矩阵中的一个递增序列是指在矩阵中找到两个字母,它们在同一行,同一列,或者在同一 45 45 度的斜线上,这两个字母从左向右看、或者从上向下看是递增的。
165 0
|
C语言
带你刷 · C语言 | 杨辉三角
问: 在屏幕上打印杨辉三角 1 1 1 1 2 1 1 3 3 1 ……
238 1
带你刷 · C语言 | 杨辉三角
|
算法
LeetCode每日一题(19)——数组中重复的数据
数组中重复的数据 1.题目 2.示例 3.思路 4.代码
|
存储 算法 C语言
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~
149 0
想要去欺负Leetcode的这些年——第二次,看看咱们是怎么把数组玩转,把数列理解透彻的~

热门文章

最新文章