数组倒置
任给数组 A[0, n)
, 将其前后颠倒
#include <iostream>
using namespace std;
void swap(int &a, int &b);
void reverse(int *A, int lo, int hi);
void print(int *A, int length);
void swap(int &a, int &b) {
int temp = a;
a = b;
b = temp;
}
void reverse(int *A, int lo, int hi) { // 子区间A[lo, hi]
if (hi > lo) { // 问题规模的奇偶性不变,需要两个递归基
swap(A[lo], A[hi]);
reverse(A, lo + 1, hi - 1);
} else
return;
}
void print(int *A, int length) {
for (int i = 0; i < length; i++) {
cout << A[i] << " ";
}
}
int main() {
int arr[10] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 0
};
print(arr, 10);
reverse(arr, 3, 7);
cout << endl;
print(arr, 10);
return 0;
}