前言:
如今你们对“c语言的循环移位”大约比较关心,看官们都想要剖析一些“c语言的循环移位”的相关资讯。那么小编在网络上搜集了一些有关“c语言的循环移位””的相关文章,希望小伙伴们能喜欢,朋友们一起来学习一下吧!数组循环移位
习题:将一个含有n个元素的数组向右循环移动k位。
方法1
Create:
a[0]=1;a[1]=2;a[2]=3;a[3]=4;
b[0]=0
step=2
n=array_length_1d(a)
for (i=0; i<n; i+=1)
{
b[(i+step) mod n] = a[i]
}
Draw:
for (i=0; i<array_length_1d(b); i+=1)
{
draw_text(0,i*20,b[i])
}
开另一个大小一样的数组B,遍历一下,令B[(i + m) % n] = A[i],再将B的内容写回到A即可。这个方法的时间复杂度为O(N),空间复杂度也为O(N)。
方法2
Create:
a[0]=1;a[1]=2;a[2]=3;a[3]=4;
step=2
n=array_length_1d(a)
for (i=0; i<step; i+=1)
{
tempt = a[n-1]
for (j=n-1; j>0; j-=1)
{
a[j]=a[j-1];
}
a[0]=tempt
}
Draw:
for (i=0; i<array_length_1d(a); i+=1)
{
draw_text(0,i*20,a[i])
}
这个办法是用两个循环来控制,内循环每次向右移动一位,外循环则用来限制移动的位数。算法需要执行 n * step次,时间复杂度是O( N2 )。
标签: #c语言的循环移位 #c语言数组循环按位右移代码 #c数组循环右移 #c如何对数组循环移位 #试设计一个算法将数组an中的元素循环右移k位