阅读量:0
在C语言中,数组逆序排列可以通过以下几种方法实现:
- 双指针法: 使用两个指针,一个指向数组的起始位置,另一个指向数组的末尾位置。然后交换这两个指针所指向的元素,接着将起始位置的指针向后移动一位,末尾位置的指针向前移动一位,重复这个过程直到两个指针相遇或者错过彼此。
#include<stdio.h> void reverseArray(int arr[], int n) { int start = 0; int end = n - 1; 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]); reverseArray(arr, n); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }
- 递归法: 递归地将数组的前n-1个元素逆序排列,然后将第n个元素与第1个元素交换。
#include<stdio.h> void reverseArray(int arr[], int start, int end) { if (start >= end) { return; } // 交换首尾元素 int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; // 递归处理剩余元素 reverseArray(arr, start + 1, end - 1); } int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); reverseArray(arr, 0, n - 1); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }
以上两种方法都可以实现数组的逆序排列。你可以根据自己的需求和喜好选择合适的方法。