chinawanglunchinawanglun.blog.chinaunix.net
chinawanglun
全部博文(69)
2012年(1)
2011年(4)
2010年(48)
2009年(14)
2008年(2)
小雅贝贝
cynthia
17040109
无二二
猴先森
zfno111
harrytsz
zhanggf8
Unuse
echoxuji
分类: C/C++
2010-08-26 17:47:42
void rightshift_1(int a[],int n,int k) //n为数组长度,k为数组右移的位数 { int i; int t; k = k % n; while (k--) { t = a[n - 1]; for (i = n - 1;i > 0;i--) { a[i] = a[i - 1]; } a[0] = t; } }
void reverse(int a[],int left,int right) //将数组内a[left]到a[roght]的元素逆置
{ int t; for (;left < right;left++,right--) { t = a[left]; a[left] = a[right]; a[right] = t; } } void rightshift_2(int a[],int n,int k)//实现循环右移
{ k = k % n; reverse(a,0,n - k - 1); reverse(a,n - k,n - 1); reverse(a,0,n - 1); }
例如:
abcde123循环右移3为
步骤1:将a[0]~a[4]逆置,得到edcba123
步骤2:将a[5]~a[7]逆置,得到edcba321
步骤3:将a[0]~a[7]逆置,得到123abcde
上一篇:awk详解
下一篇:Linux文件特殊权限 SUID/SGID/Sticky Bit
登录 注册