/*
作者:jianxiawzx 时间: 2013/1/8
题目:对一个数组,进行左移p位操作,要求时间、空间复杂度尽量低
*/
#include<stdio.h>
#define MAXSIZE 20
int number[MAXSIZE];
void Re(int R[],int l,int r)
{
int i,j,temp;
for(i=l,j=r;i<j;i++,j--)
{
temp = R[i];
R[i] = R[j];
R[j] = temp;
}
}
int main()
{
int i,n,p;
printf("输入数组元素\n");
scanf("%d",&n);
printf("输入各个元素\n");
for(i=0;i<n;i++)
{
scanf("%d",&number[i]);
}
printf("输入移位次数\n");
scanf("%d",&p);
if(p<0||p>n)
{
printf("input error!!!");
return 0;
}
Re(number,0,p-1);
Re(number,p,n-1);
Re(number,0,n-1);
printf("结果为\n");
for(i=0;i<n;i++)
{
printf("%d ",number[i]);
}
return 0;
}
测试数据
10
1 2 3 4 5 6 7 8 9 10
3
结果