朝花夕拾lzhh.blog.chinaunix.net
朝花夕拾
全部博文(118)
LFS(3)
2014年(1)
2013年(1)
2010年(6)
2009年(27)
2008年(10)
2007年(33)
2006年(38)
2005年(2)
zhangtan
镇水铁牛
dog_wang
callmeSi
mahone12
micheal7
简单随心
minminms
liq02061
分类:
2007-10-08 13:45:00
static void onestep(int *s,int n); /*循环左移1位*/void rsh(int *s,int n,int t); /*循环左移t位*/void rsh(int *s,int n,int t){ for(;t>0;t--) onestep(s,n);}static voidonestep(int *s,int n){ int i,tmp; tmp=s[0]; for(i=0;i<n-1;i++) s[i]=s[i+1]; s[n-1]=tmp;}
(2)改进的算法
static int gcd(int m,int n);/*m,n的最大公约数*/void rsh(int *s,int n,int t);/*数组s循环左移t位*/voidrsh(int *s,int n,int t){ int i,j,k,p,tmp; t%=n; p=gcd(n,t); for(i=0;i<p;i++){ k=i;j=(i+t)%n; tmp=s[i]; while(j!=i){ s[k]=s[j]; k=j; j=(k+t)%n; } s[k]=tmp; }}static intgcd(int n,int m){ int t; for(t=n%m;t;){ n=m; m=t; t=n%m; } return m;}
上一篇:C语言编译器的预定义符号
下一篇:搜索子串
chinaunix网友2008-03-22 22:28:57
多谢指出, 已更正
chinaunix网友2008-03-20 01:04:06
楼主rsh()函数体有误.(非逻辑错误,估计是书写错误). while()体里面,j=(k+i)%n;是不是该:j=(k+t)%n; ?
登录 注册