高效的循环左移算法

算法要求:

设将n(n>1)整数存放到一维数组R中。设计一个在时间和空间两方面尽可能高效的算法。将R中的序列循环左移p(0(X0,X1,……,Xn-1)变换为(Xp, Xp+1, …,Xn-1,X0,X1,…,Xp-1)要求:
(1) 给出算法的基本设计思想。
(2) 根据设计思想,采用C或C++或JAVA语言描述算法,关键之处给出注释。
(3) 说明你所设计算法的时间复杂度和空间复杂度。

 

递归法(就这样叫吧)

#define N 15 #include using namespace std; void zuoYi(int arr[],int start,int p)//左移位数 { int behind,front=start; int temp=arr[front]; while(p) { behind=front+p; if(behind>=N) behind-=N; //cout<

 

翻转法:

#define N 15 #include using namespace std; /****************************************************************************************** 翻转法: 先把数组的前p个元素翻转,再把后面的n-p个元素翻转,接着整个元素进行翻转 *******************************************************************************************/ void Swap(int arr[],int begin,int end) { int temp; while(begin

你可能感兴趣的:(高效的循环左移算法)