首页 > 试题广场 >

有序序列判断

[编程题]有序序列判断
  • 热度指数:50493 时间限制: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
示例3

输入

5
1 1 1 1 1

输出

sorted
#include<stdio.h>
int main() {
int n, arr[100];
scanf("%d", &n);
int i;
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
int IsAsc=1;
int IsDesc = 1;
for (i = 0; i < n - 1; i++) {
if (arr[i] > arr[i + 1]) {
IsAsc = 0;
}
if (arr[i] < arr[i + 1]) {
IsDesc = 0;
}
}
if (IsAsc || IsDesc) { //IsAsc和IsDesc值为1时,才是真.0为假
printf("sorted");
} else {
printf("unsorted");
}

return 0;
}

发表于 2024-10-20 12:51:35 回复(0)
#include <stdio.h>

int main() {

    int N;
    scanf("%d", &N);
    int arr[N];
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &arr[i]);
    }
    int r = arr[0] - arr[1];
    if (r < 0)
    {
        for (int i = 1; i < N - 1; i++)
        {
            if (arr[i] - arr[i + 1] > 0)
            {
                printf("unsorted");
                break;
            }
            if(i==N-2)
             printf("sorted");
        }
       
       
    }
else if (r > 0)
    {
        for (int i = 1; i < N - 1; i++)
        {
            if (arr[i] - arr[i + 1] < 0)
            {
                printf("unsorted");
                break;
            }
            if(i==N-2)
             printf("sorted");
        }
       
    }
    else
    {
        for (int i = 1; i < N - 1; i++)
        {
            if ((arr[i] - arr[i + 1]) != 0)
            {
                printf("unsorted");
                break;
            }
            if(i==N-2)
             printf("sorted");
        }
       
    }
    return 0;
}
发表于 2024-09-24 23:54:14 回复(0)
#include <stdio.h>

int main() 
{
    int n=0;
    scanf("%d",&n);
    int a[50]={0};
    int b[50]={0};
    int c[50]={0};
    int i=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
        b[i]=a[i];
        c[i]=a[i];
    }
    int j=0;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(a[j]>a[j+1])
            {
                int temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
    
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<n-1-i;j++)
        {
            if(b[j]<b[j+1])
            {
                int temp=b[j];
                b[j]=b[j+1];
                b[j+1]=temp;
            }
        }
    }
    int num=0;
    int mun=0;
    for(i=0;i<n;i++)
    {
        if(a[i]==c[i])
        {
            num++;
            //printf("1");   
        }
        if(b[i]==c[i])
        {
            mun++;
        }

    }
    if(num==n||mun==n)
    {
        printf("sorted");
    }
    else
    {
        printf("unsorted");
    }

    return 0;
}

发表于 2024-08-22 21:25:55 回复(0)
#include <stdio.h>
#include <math.h>

int main() {
    int n;
    scanf("%d", &n);
    int arr[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }

    int sum = 0;
    for (int i = 1; i < n; i++) {
        if (arr[i] - arr[i - 1] >= 0) sum ++;
        else sum--;

    }

    if (n == (abs(sum) + 1))printf("sorted");
    else printf("unsorted");

    return 0;
}

发表于 2024-08-07 10:00:39 回复(0)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

//判断是否有序
bool IsOrder(int *a, int size)
{
    //降序  1 1 1 1 1 也认为降序
    if(a[0] >= a[1])
    {
        //也要降序
        //i为size-1是因为当i = size-1时,i+1不越界
        for(int i = 0; i < size - 1; i++)
        {
            if(a[i] < a[i + 1])
                return false;
        }
    }
    else 
    {
        //升序
        for(int i = 0; i < size -1; i++)
        {
            if(a[i] > a[i + 1])
                return false;
        }
    }
    return true;   
}

int main() 
{
    int n = 0;
    scanf("%d", &n);
    int* a = (int*)malloc(sizeof(int) * n);
    for(int i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    //判断是否有序
    if(IsOrder(a, n))
        printf("sorted");
    else
        printf("unsorted");
    
    return 0;
}

发表于 2024-06-23 03:05:30 回复(0)
#include <stdio.h>

int main() {
    int n=0;
    int i=0;
    scanf("%d",&n);
    int arr[100]={0};
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int c1=0,c2=0;
    for(i=0;i<n-1;i++)
    {
        if(arr[i+1]-arr[i]>0)
        {
            c1++;
        }
        else if(arr[i+1]-arr[i]<0)
        {
            c2++;
        }
    }
    if(c1==n-1||c2==n-1||(c1==0&&c2==0))
    {
        printf("sorted");
    }
    else  {
    printf("unsorted");
    }
    return 0;
}
发表于 2024-05-20 19:51:44 回复(0)
#include<stdio.h>
int fromMin(int a[], int n) {
    int min = a[0];
    int i;
    for (i = 1; i < n; i++) {
        if (a[i] >= min)
            min = a[i];
        else
            break;
    }
    if (i == n)
        return 1;
    else
        return 0;
}
int fromMax(int a[], int n) {
    int max = a[0];
    int i;
    for (i = 1; i < n; i++) {
        if (a[i] <= max)
            max = a[i];
        else
            break;
    }
    if (i == n)
        return 1;
    else
        return 0;
}

int main() {
    int n;
    int flag = 0;
    scanf("%d", &n);
    int a[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    if (a[0] > a[1])
        flag = fromMax(a, n);
    else
        flag = fromMin(a, n);
    if (flag)
        printf("sorted");
    else
        printf("unsorted");
    return 0;
}
发表于 2024-05-16 02:09:05 回复(0)
#include <stdio.h>

int main() {
    int a[100] = {0};
    int count=0,n;
    scanf("%d",&n);

    for(int i=0;i<n;i++)  //输入数值
    {
        scanf("%d",&a[i]);
    }



    if(a[0] > a[1])
    {
        for(int i = 0;i<n-1;i++)
        {
            if(a[i] < a[i+1])
            { 
                count++;
                break;
            }
        }
    }

    if(a[0] < a[1])
    {
        for(int i = 0;i<n-1;i++)
        {
            if(a[i] > a[i+1])
            {
                count++;
                break;
            }
        }
    }


    if(count != 0)
        printf("unsorted\n");
    else
        printf("sorted\n");


    return 0;
}


编辑于 2024-04-21 13:33:39 回复(0)
#include <stdio.h>

int main() {
    int n = 0;
    scanf("%d",&n);
    int i = 0, j = 0;
    int arr[n];
    for(i = 0; i < n; i++){
        scanf("%d",&arr[i]);
    }
    for(i = 0; i < n; i++){
        for(j = 0; j < i; j++){
            if(arr[1] > arr[0] ? arr[i] < arr[j] : arr[i] > arr[j]){
                puts("unsorted");
                return 0;
            }
        }
    }
    puts("sorted");
    return 0;
}



发表于 2024-03-21 17:37:49 回复(0)
#include <stdio.h>

int main() {
    int n, a[50], temp, count1 = 0, count2 = 0;
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (a[j] > a[j + 1]) { //判断升序
                count1++;
            }
            if (a[j] < a[j + 1]) { //判断降序
                count2++;
            }
        }
    }
    if (count1 && count2) {
        printf("unsorted");
    }
    else {
        printf("sorted");
    }
    return 0;
}
发表于 2024-03-04 09:55:13 回复(0)
#include <stdio.h>

int main() {
    int a = 0, arr[50] = { 0 };
    scanf("%d", &a);
    for (int i = 0; i < a; i++) {
        scanf("%d", &arr[i]);
    }
    int i = 0, j = 1;
    while(arr[i] <= arr[j] ) {
        i++;
        j++;
    }
    int c = 0, d = 1;
    while (arr[c] >= arr[d]&&arr[d]!=0) {
        c++;
        d++;
    }
    if (a == j||a==d) {
        printf("sorted");
    }
    else {
        printf("unsorted");
    }
    return 0;
}

发表于 2024-02-17 16:25:04 回复(0)
#include <stdio.h>

int main()
{
	int arr[50] = { 0 };
	int sz = 0;
	int i = 0;
	int flag_1 = 0;//降序
	int flag_2 = 0;//升序

	//输入
	scanf("%d", &sz);
	for (i = 0; i < sz; i++)
	{
		scanf("%d", &arr[i]);

		//判断
		if (i > 0)
		{
			if (arr[i] < arr[i - 1])//降序
			{
				flag_1 = 1;
			}
			else if (arr[i] > arr[i - 1])//升序
			{
				flag_2 = 1;
			}
			//2个数字相同,则不处理,直接进入下一轮
		}
	}


	//输出
	if (flag_1 + flag_2 <= 1)
	{
		printf("sorted\n");
	}
	else
	{
		printf("unsorted\n");
	}

	return 0;
}

编辑于 2024-02-04 02:49:09 回复(0)
#include <stdio.h>

int main() {
    int n, down = 0, up = 0;
    scanf("%d", &n);
    int str[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &str[i]);
        if (i != 0 && str[i] <= str[i - 1]) {
            down++;
        }
        if (i != 0 && str[i] >= str[i - 1]) {
            up++;
        }
        if (i == n - 1) {
            if (down == n - 1 || up == n - 1) {
                printf("sorted");
            } else {
                printf("unsorted");
            }
        }
    }
    return 0;
}

发表于 2024-01-30 21:09:14 回复(0)
#include <stdio.h>
//1 6 9 22 30 判断所有元素升序或降序
int main() {
    int N = 0;
    int arr[50] = {0};
    scanf("%d", &N);
    int flag1 = 0;//升序
    int flag2 = 0;//降序
    for (int i = 0; i < N; i++) {
        scanf("%d", &arr[i]);
        if (i > 0) {
            if (arr[i] > arr[i - 1]) {
                flag1 = 1;
            } else {
                {
                    flag2 = 1;
                }
            }
        }
    }
    if (flag1 + flag2 == 1) {
        printf("sorted\n");
    } else {
        printf("unsorted\n");
    }
    return 0;
}

发表于 2024-01-22 23:13:38 回复(0)
#include <stdio.h>
//吃掉吃掉!
int main() {
    int a[60], b=0,cnt=0;
    getchar();
    getchar();//因为输入在两位数以内,要用两个getchar()或者一个scanf也行,就能把第一行吃掉啦
    while (scanf("%d", &a[b++]) != EOF);
    for(int i=0;i<b-1;i++){
        for(int j=i;j<b-1;j++){
            if(a[i]>a[j])cnt++;//cnt计算当前序列的值比之后序列的值大的次数
        }
    }
    int g=0;
    for(int i=1;i<=b-2;i++)g+=i;//别问为什么g这么突兀,问就是第一次没搞g没完全成功临时加的
    if(cnt==0||cnt==g)printf("sorted");
    else printf("unsorted");
    return 0;
}//后来想了一下,是因为没有写a[i]与a[j]交换的代码导致cnt数量大大增加

编辑于 2024-01-13 16:33:51 回复(0)
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d", &n);
    int arr[100] = { 0 };
    int flage = 1;
    for (int i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
   
    if (arr[0] > arr[n - 1])
    {
        int a = 0;
        while (arr[a+1])
        {
            if (arr[a] < arr[a + 1])
            {
                flage = 0;
            }
            a++;
        }
    }
    else if (arr[0] == arr[n - 1])
    {
        int a = 0;
        while (arr[a+1])
        {
            if (arr[a] != arr[a + 1])
            {
                flage = 0;
            }
            a++;
        }
    }
    else
    {
        int a = 0;
        while (arr[a+1])
        {
            if (arr[a] > arr[a + 1])
            {
                flage = 0;
            }
            a++;
        }
    }
    if (flage == 1)
    {
        printf("sorted");
    }
    else
    {
        printf("unsorted");
    }
    return 0;
}
编辑于 2023-12-12 13:12:32 回复(0)
#include <stdio.h>

int main() {
    int n,i,j,a[50];
    scanf("%d\n", &n);
    for (i=0; i<n; i++) {
        scanf("%d ",&a[i]);
    }
    for (i=0; i<n-2; i++) {
        if ((a[i+1]-a[i])*(a[i+2]-a[i+1])<0) {
            printf("unsorted");
            break;
        }
    }
    if (i==n-2) {
        printf("sorted");
    }
   
    return 0;
}
发表于 2023-11-24 21:55:07 回复(0)