您的位置:首页 > 其它

关于循环移位

2012-03-16 22:49 120 查看
怎样降低循环移位的复杂度?我是通过交换来达到目的,有更好的方法吗
#include<stdio.h>

#include<malloc.h>

int main()

{

int i,count=0,k,tmp,m,n,t,flag=0;//tmp是辅助结点

printf("请输入所移位数\n");

scanf("%d",&k);

i=k-1;

t=i;

printf("请输入你希望的数字位数\n");

scanf("%d",&m);

n=m;

printf("请输入数字\n");

int *a=(int*)malloc(sizeof(int)*m);

for(int j=0;j<=n-1;j++)

scanf("%d",&a[j]);

while(count<n)//最多比较n次

{

if(k==n)

break;

if(i>n-1)

i-=n;

if(i==m-1)

{

flag++;

if(count+flag==n)

{

break;

}

m=m-1;

t=t-1;

i=t;

}

tmp=a[i];

a[i]=a[m-1];

a[m-1]=tmp;

i+=k;

count++;

}

for(i=0;i<=n-1;i++)

printf("%d\n",a[i]);

free(a);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: