2016-12-06 183 views
2

如何使用循环打印下列值。 基本上我正在采取数组的大小,并添加第一项入数组的中间,如果数组的大小奇数。如果它是第一次进入下面的数组的一半。就像下面我加15th的位置。使用循环打印值

然后第二次进入第一位置。第一个条目的下方第三个条目。第四个条目到第二个条目。第五项进入到第三项并且以此类推。

在简单的第一个入口到中心,第二个入口到顶部,第三个入口到中心以下,以此类推。

2,4,6,8,1,3,5,7

+3

你在用什么语言?你写了一些你可以分享的片段吗? – hypnos

+0

@hypnos我在写算法,语言无所谓。 – Infinity

回答

4

伪的公约从作者到笔者变化。这不能在原地完成。因此,您需要另一个阵列来复制结果。

left = 0, right = res.length/2 
for i = 0 to res.length - 1: 
    if i is even: 
     res[right] = arr[i] 
     right++ 
    else 
     res[left] = arr[i] 
     left++ 

改编是你原来的阵列和RES是要填充空数组。

+0

假设'res.length = 8'然后'right = 7'在循环'i = 0'下,这意味着'我是偶数',那么它设置res [7] = arr [0]'res [7] = 1'。 'arr'的第一个元素错误设置在'5th'位置 – Infinity

+0

我必须喝醉了。 'right = arr.length/2'。我有正确的Java代码。这是伪代码中的错字 – rafid059

+0

但是在上面写'right = res.length-1' – Infinity