首页 > 试题广场 >

有序序列判断

[编程题]有序序列判断
  • 热度指数:292 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序。

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


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

输入

5
1 6 9 22 30

输出

sorted
示例2

输入

5
3 4 7 2 10

输出

unsorted
#include <stdio.h>
intmain()
{
    intn=0;
    scanf("%d",&n);
    intarr[n];
    intcount1=0;//统计降序的次数
    intcount2=0;//统计升序的次数
    intcount3=0;//统计相等的次数
    for(inti=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    for(inti=0;i<n-1;i++)
    {
        if(arr[i]>arr[i+1])
        {
            count1++;
        }
        elseif(arr[i]<arr[i+1])
        {
            count2++;
        }
        else
        {
            count3++;
        }
    }
    if((count1+count3==n-1)||(count2+count3==n-1))//当升序次数加上相等次数等于n-1次就表示有序,或者当降序次数加上相等次数等于n-1也表示有序,这是由于当比较次数是n-1次。
    {
        printf("sorted\n");
    }
    else
    {
        printf("unsorted\n");
    }
    return0;
}
发表于 2024-02-15 19:32:37 回复(0)
#include <stdio.h>

int main()
{
    int n;
    int a[50];
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    int flag1 = 0;
    int flag2 = 0;
    int i;
    for (i = 1; i < n; i++)
    {
        if (a[i] >= a[i - 1])
        {
            flag1 = 1;
        }
        else if (a[i] <= a[i - 1])
        {
            flag2 = 1;
        }
    }
    if ((flag1 == 1 && flag2 != 1) || (flag2 == 1 && flag1 != 1))
        printf("sorted");
    else
        printf("unsorted");
        return 0;
}
发表于 2023-12-11 08:42:28 回复(0)
#include<bits/stdc++.h>
using namespace std;
int n,a[50];bool s=1;
int main(){
    cin>>n;
    for(int i=0;i<n;++i) cin>>a[i];
    for(int i=0;i<n-1;++i){
        if(a[i]<a[i+1]){
            s=0;
            break;
        }
    }
    if(s){
        cout<<"sorted"<<endl;
        return 0;
    }
    s=1;
    for(int i=0;i<n-1;++i){
        if(a[i]>a[i+1]){
            s=0;
            break;
        }
    }
    if(s){
        cout<<"sorted"<<endl;
        return 0;
    }
    cout<<"unsorted"<<endl;
    return 0;
}
编辑于 2019-11-10 10:31:26 回复(0)
n = input()
a = list(map(int,input().split()))
a_i = a[0]
det = a[-1]-a[0]
for i in range(1,len(a)):
  if det == 0:
    if a[i] != a_i:
      print("unsorted")
      break
  else:
    if (a[i]-a_i) * det >0:
      a_i = a[i]
    else:
      print("unsorted")
      break
else:
  print("sorted")
要考虑首尾元素相等的情况
发表于 2019-09-12 15:51:49 回复(0)
let N = parseInt(readline());
let numList = readline().split(' ');

let signal = parseInt(numList[0])-parseInt(numList[1]);
let status = true;
for(let i=1; i<N-1; i++){
    if(signal*(parseInt(numList[i])-parseInt(numList[i+1]))<0){
        status = false;
        break;
    }
}
console.log(status ? 'sorted' : 'unsorted');

发表于 2019-09-12 12:15:04 回复(0)

问题信息

上传者:小小
难度:
5条回答 2066浏览

热门推荐

通过挑战的用户