设将n(n>1)个整数存放到一维数组R中,试设计一个在时间和空间两方面都尽可能高效的算法。将R中保存的序列循环左移p(0 < p < n)个位置,即将R中的数据由(X0,X1,…,Xn-1`)变换为(Xp,Xp+1,…,Xn-1,X0,X1,…,Xp-1)。要求:
1)给出算法的基本设计思想
2)根据设计思想,采用C或++或Java语言描述算法,关键之处给出注释。
3)说明你所设计算法的时间复杂度和空间复杂度
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
const int MAXSIZE = 50;
void RolArray(int a[], int n, int p);
void Print(int a[], int n);
void Reverse(int a[], int start, int end);
int main() {
int array[MAXSIZE];
int n, x, p;
cout << "请输入元素的个数:";
cin >> n;
cout << "请依次输入元素的值:";
for (int i = 0; i < n; i++) {
cin >> x;
array[i] = x;
}
cout << "数组内的元素依次为:" << endl;
Print(array, n);
cout << "请输入循环左移的位数:";
cin >> p;
RolArra