数组数据块移动
有n个正数,使得前面每个数依次向后移动m个位置,最后m个数变成最前面的m个数(尽可能优化时间空间复杂度)
/*
有n个正数,使得前面每个数依次向后移动m个位置,最后m个数变成最前面的m个数(尽可能优化时间空间复杂度)
*/
#include<stdio.h>
#define N 100
int a[N];
int main(){
int n,m,i;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++) scanf("%d",&a[i]);
int *p,tmp;
for(i=1;i<=m;i++){
p=a+n-1;
tmp=*p;
for(p=a+n-1;p>a;p--) *p=*(p-1);
*p=tmp;
}
for(i=0;i<n;i++) printf("%d ",a[i]);
return 0;
}
/*
时间复杂度:O(n2)
空间复杂度:O(1)
*/