C语言如何用reverse算法
时间: 2024-10-20 13:08:32 浏览: 11
在C语言中,反转数组或字符串通常使用双指针的方法,即一个指向数组开始,另一个指向结束,然后逐次交换两个指针所指向的元素直到相遇。这里有一个简单的例子,展示如何使用这种方法反转一个整数数组:
```c
#include <stdio.h>
void reverse(int arr[], int start, int end) {
while (start < end) {
int temp = arr[start]; // 临时保存起始位置的元素
arr[start] = arr[end]; // 将末尾元素移动到起始位置
arr[end] = temp; // 将起始位置的元素移到末尾
start++; // 移动起始指针
end--; // 移动结束指针
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Original array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
reverse(arr, 0, n - 1); // 反转整个数组
printf("\nReversed array: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个`reverse`函数里,`arr`是一个整数数组,`start`和`end`分别是当前需要处理的子数组范围的起点和终点。当`start`小于`end`时,就继续交换这两个位置的元素,直到两者相遇。
阅读全文