可以阿,当你要生成新的数组的时候...你可以设置一个辅助数组...比如temp为辅助数组.j表示当时第一个元素所在的位置..
j:=j-1;
for i:=1 to n do
begin
inc(j);
if j>n then j:=1;
temp[i]:=a[j];
end;
最后只要把Temp和A这两个数组互换一下..这个是最直观的方法,当然还有麻烦一点点地,但是可以节省内存..
设置一个变量,保存移动后第一个元素的原来位置就可以了...
在通过这个变量来输出移动后的数组..
就看这个样例
原来是
a b c d e f g
移后是
f g a b c d e
移动后这个变量就应该是 6 ,因为 f 在原来那个数组里是处于第6位,以后只要用加减法计算这个位置就可以了...计算的时间复杂度可以省去...然后再把他输出来,复杂度就是 n 了..