设计一个程序,将数组A【n】的两段数据对调,两端数据的下标为p0,p1,p2,p3,要求0小于等于p0小于等于p1小于等于p2小于p3小于等于n-1,
时间: 2023-06-10 20:07:51 浏览: 122
设计一个函数, 找到数组中的最大值以及下标。
以下是一个实现该功能的 C++ 程序:
```cpp
#include <iostream>
using namespace std;
void swap(int* arr, int left, int right, int k) {
for (int i = 0; i <= k; i++) {
int tmp = arr[left + i];
arr[left + i] = arr[right + i];
arr[right + i] = tmp;
}
}
void reverse(int* arr, int n, int p0, int p1, int p2, int p3) {
swap(arr, p0, n - p1 - 1, p1 - p0);
swap(arr, p2, n - p3 - 1, p3 - p2);
swap(arr, p0, n - p3 - 1, p3 - p0);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int n = sizeof(arr) / sizeof(int);
int p0 = 1, p1 = 2, p2 = 3, p3 = 6;
reverse(arr, n, p0, p1, p2, p3);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这个程序中,我们定义了一个 `swap` 函数,用于交换数组中两段数据。然后,我们在 `reverse` 函数中按照题目要求,依次交换三个区间的数据。最后,我们在 `main` 函数中测试了一下程序的正确性。
阅读全文