龙空技术网

GameMaker游戏编程 GML语言(25)_ 数组循环移位

GameMaker游戏编程 54

前言:

如今你们对“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位