一排数,后面有数比当前的数小,那后面比这个数小的所有数一定是按降序排列的,代码怎么写C语言
时间: 2024-09-23 17:06:03 浏览: 25
在C语言中,如果你想要判断一排数字,如果某个数后面所有较小的数按照降序排列,你可以采用双指针策略,一个指针遍历数组,另一个指针从后向前扫描。下面是一个简单的示例代码:
```c
#include <stdio.h>
// 定义比较函数,用于检查相邻元素是否满足条件
int compare(int a, int b) {
return a > b; // 如果a大于b,说明b按降序排列
}
// 判断数组是否满足条件
int is_sorted_descending(int arr[], int n) {
if (n <= 1) { // 数组只有一个元素或为空,则直接返回真
return 1;
}
int left = 0, right = n - 1; // 左右指针初始位置
while (left < right) {
if (arr[left] < arr[right]) { // 当前元素满足条件
// 检查右侧是否有更大的数
while (right > 0 && arr[right] >= arr[right - 1]) {
right--;
}
// 如果右侧存在更小的数,说明不符合降序排列
if (arr[right] > arr[left]) {
return 0;
}
} else {
// 当前元素不满足条件,向左移动左指针并检查下一个元素
left++;
}
}
return 1; // 遍历完成后,表示整个数组满足条件
}
int main() {
int arr[] = {5, 4, 3, 2, 1}; // 测试数组
int n = sizeof(arr) / sizeof(arr[0]);
if (is_sorted_descending(arr, n)) {
printf("数组按降序排列\n");
} else {
printf("数组不是按降序排列\n");
}
return 0;
}
```
阅读全文