输入一个整数序列,判断是否是有序序列,有序,指序列中的整数从小到大排序或者从大到小排序(相同元素也视为有序)。
数据范围:
序列中的值都满足 
第一行输入一个整数N(3≤N≤50)。第二行输入N个整数,用空格分隔N个整数。
输出为一行,如果序列有序输出sorted,否则输出unsorted。
5 1 6 9 22 30
sorted
5 3 4 7 2 10
unsorted
5 1 1 1 1 1
sorted
#include <stdio.h> int main() { int n = 0; scanf("%d",&n); int arr[50] = {0}; for(int i = 0;i<n;i++) { scanf("%d ",&arr[i]); } int flag = 0; int j = 0; for(j = 0;j<n-1;j++) { if(arr+j+1>=arr+j) { //递增 flag++; } } if(flag == n-1 || flag == 0) { printf("sorted"); } else { printf("unsorted"); } return 0; }
#include<stdio.h> void My_scanf(int arr[],int n)//录入信息函数 { int i = 0; for(i=0;i<n;i++) { scanf("%d ",&arr[i]); } } int Judge(int arr[],int n ) //判断函数 { int i = 0; int j = 0; int count = 0; int sum = 0; for(i=0;i<n-1;i++) { if(arr[i]<=arr[i+1]) { count++; } } for(j=0;j<n-1;j++) { if(arr[j]>=arr[j+1]) { sum++; } } if(count == n-1||sum == n-1) { return 1; } return 0; } int main() { int n = 0; scanf("%d\n",&n); int arr[n]; My_scanf(arr,n); int ret = Judge(arr,n); if(ret == 1) { printf("sorted\n"); } else { printf("unsorted\n"); } return 0; }
#include<stdio.h> int main() { int n = 0; scanf("%d", &n); int arr[20] = { 0 }; int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } int j = 0; int judeg = 1; //判断是否有序 //通过判断前面数,来决定是升序还是降序 for (i = 0; i < n-1 && judeg == 1;) { if (arr[i] > arr[i + 1]) { //降序 for (j = i; j < n - 1; j++,i++) { if (arr[j] < arr[j + 1]) { judeg = 0; break; } } } else if (arr[i] < arr[i + 1]) { //升序 for (j = i; j < n - 1; j++,i++) { if (arr[j] > arr[j + 1]) { judeg = 0; break; } } } else //左右俩数相等 i++; } if (judeg == 1) printf("YES\n"); else printf("NO\n"); return 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; }
#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; }
#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; }
#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; }
#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; }
#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; }
#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; }