BC122. 有序序列判断
描述
输入描述
输出描述
输出为一行,如果序列有序输出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
C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2021-09-12
#include<stdio.h> #include<assert.h> int pd(int *a,int n) { assert(a&&n); int f1=1; int f2=1; int i=0; for(i=0;i<n-1;i++) { if(a[i]>a[i+1]) { f1=0; } } for(i=0;i<n-1;i++) { if(a[i]<a[i+1]) { f2=0; } } return (f1||f2); } int main() { int a[50]; int i,N; scanf("%d",&N); for(i=0;i<N;i++) { scanf("%d ",&a[i]); } if(pd(a,N)) { printf("sorted\n"); } else { printf("unsorted\n"); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-09-10
#include <stdio.h> #include <stdlib.h> int is_sorted(const int* arr, int size) { int flag_1 = 1; int flag_2 = 1; for (int i = 0; i < size - 1; i++) { if (arr[i] > arr[i+1]) { flag_1 = 0; } } for (int i = 0; i < size - 1; i++) { if (arr[i] < arr[i+1]) { flag_2 = 0; } } return (flag_1 || flag_2); } int main() { int* pArr = NULL; int count = 0; scanf("%d", &count); pArr = malloc(4 * count); for (int i = 0; i < count; i++) { scanf("%d", &pArr[i]); } if (is_sorted(pArr, count)) { printf("sorted\n"); } else { printf("unsorted\n"); } if (pArr != NULL) { free(pArr); pArr = NULL; } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 336KB, 提交时间: 2021-09-12
#include <stdio.h> #include <assert.h> int is_sorted_in_ascend_order(int* arr, int sz){ assert(arr); assert(sz); int i = 0; int flag = 0; for(i = 0; i < sz - 1; i++){ if(arr[i] < arr[i + 1]){ flag = 0; } else{ flag = 1; break; } } return flag; } int is_sorted_in_reverse_order(int* arr, int sz){ assert(arr); assert(sz); int i = 0; int flag = 0; for(i = 0; i < sz - 1; i++){ if(arr[i] > arr[i + 1]){ flag = 1; } else if(arr[i] == arr[i+1]){ flag = 2; } else{ flag = 0; break; } } return flag; } int main () { int input = 0; scanf("%d", &input); int arr[input]; int i = 0; while(scanf("%d", &arr[i]) != EOF){ i++; } int result1 = is_sorted_in_ascend_order(arr, input); int result2 = is_sorted_in_reverse_order(arr, input); if((result1 == 0 && result2 == 0) || (result2 == 2)){ printf("sorted"); } else if(result1 == 1 && result2 == 1){ printf("sorted"); } else{ printf("unsorted"); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 336KB, 提交时间: 2021-09-08
#include<stdio.h> //第一行输入一个整数N(3≤N≤50)。 //第二行输入N个整数,用空格分隔N个整数。 //输出为一行,如果序列有序输出sorted,否则输出unsorted。 int main() { int n = 0; int arr[50] = { 0 }; scanf("%d", &n);//输入数组大小 int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } int s1 = 0; int s2 = 0; for (i = 0; i < n-1; i++) { if (arr[i] <= arr[i + 1]) { s1++; } } for (i = 0; i < n-1; i++) { if (arr[i] >= arr[i + 1]) { s2++; } } //printf("%d,%d\n", s1,s2); if (s1 == (n - 1)||s2 == (n - 1)) { printf("sorted\n"); } else { printf("unsorted\n"); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 348KB, 提交时间: 2021-09-09
#include <stdio.h> int main() { int n = 0; int arr[50] = {0}; scanf("%d",&n); for(int i = 0;i<n;i++) { scanf("%d",&arr[i]); } if(arr[1] >= arr[0])//升序 { int i = 0; for(i=1; i<n; i++) { if(arr[i] < arr[i-1]) break; } if(i == n)//正常比较完结束循环,而不是出现arr[i+1] < arr[i]中途break 掉循环 { printf("sorted\n"); return 0; } printf("unsorted\n"); } else//降序 { int i = 0; for(i=1; i<n; i++) { if(arr[i] > arr[i-1]) break; } if(i == n)//正常比较完结束循环,而不是出现arr[i+1] > arr[i]中途break 掉循环 { printf("sorted\n"); return 0; } printf("unsorted\n"); } return 0; }