数组循环左移P位算法

来源:岁月联盟 编辑:exp 时间:2012-10-07
/*
设将n(n>1)个整数存放到一维数组R中。设计一个代码将R中的序列循环左移P(0<P<n),即将R中的数据由
{X0,X1,……Xn-1}变换为{Xp,Xp+1,……,Xn-1,X0,X1,……,Xp-1}
分析:将前P个元素逆置,再将剩下的元素逆置,最后将所有元素逆置
*/   www.2cto.com
void Reverse(int R[],int l,int r)
{
 int i,j;
 int temp;
 for(i=l,j=r;i<j;i++,--j)
 {
  temp = R[i];
  R[i] = R[j];
  R[j] = temp;
 }
}
void RCR(int R[],int n,int p)
{
 if(p<=0||P>=n)
 {
  printf("ERROR/n");
 }
 else
 {
  Reverse(R,0,p-1);
  Reverse(R,p,n-1);
  Reverse(R,0,n-1);
 }
}

图片内容