c语言先递增再递减有序数组的输出
时间: 2024-12-11 15:22:15 浏览: 15
在C语言中,如果你有一个先递增后递减的有序数组,想要按照原顺序输出数组元素,可以采用双指针法。首先从数组的一端开始(通常是较小端),然后遍历到另一端(较大的端)。每次迭代时,比较两个指针所指向的元素,将较小的那个输出,然后将较小元素对应的指针向数组中心移动一步。
这里是一个简单的示例:
```c
#include <stdio.h>
void printInvertedOrder(int arr[], int size) {
int start = 0; // 较小端初始位置
int end = size - 1; // 较大端初始位置
while (start < end) {
if (arr[start] <= arr[end]) { // 如果当前元素小于等于下一个大元素
printf("%d ", arr[start]); // 输出较小元素并更新起点
start++; // 移动起点
} else {
printf("%d ", arr[end]); // 输出较大元素并更新终点
end--; // 移动终点
}
}
// 输出最后一个元素(可能是递增或递减)
printf("%d", arr[start]);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 4, 3, 2, 1};
int size = sizeof(arr) / sizeof(arr[0]);
printInvertedOrder(arr, size);
return 0;
}
```
运行上述程序,它会按照先递增后递减的顺序打印出数组的元素:1 2 3 4 4 3 2 1。
阅读全文