📅  最后修改于: 2023-12-03 15:13:47.249000             🧑  作者: Mango
在C语言中,数组是一种非常常见的数据结构,但是在使用的时候也会遇到各种各样的问题。本文将介绍C语言中数组的问题4:如何判断一个数组是否是升序排列。
给定一个整型数组,如何判断它是否是升序排列的。
该方案的思路是遍历整个数组,逐一比较当前元素与前一个元素的大小。
int is_sorted(int arr[], int n) {
for (int i = 1; i < n; i++) {
if (arr[i] < arr[i-1]) {
return 0;
}
}
return 1;
}
该方案的时间复杂度为 $O(n)$,空间复杂度为 $O(1)$,适用于数组长度较小的情况。
该方案的思路是先使用sort函数对数组进行排序,然后再判断排序前后数组是否一致。
#include <stdlib.h>
int is_sorted(int arr[], int n) {
int arr_copy[n];
for (int i = 0; i < n; i++) {
arr_copy[i] = arr[i];
}
qsort(arr_copy, n, sizeof(int), compare);
for (int i = 0; i < n; i++) {
if (arr_copy[i] != arr[i]) {
return 0;
}
}
return 1;
}
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
该方案的时间复杂度为 $O(nlogn)$,空间复杂度为 $O(n)$,适用于数组长度较大的情况。
本文介绍了两种判断数组是否升序排列的方法,有遍历数组和排序后比较两种方法。需要根据具体情况选择合适的方法,以获得更好的性能。