请问一个笔试题,要求复杂度O(n),空间O(1)

请教一个笔试题,要求复杂度O(n),空间O(1)
有一个数组a=[a1,a2,a3,...an,b1,b2,b3...bn]
要变成
[a1,b1,a2,b2,a3,b3,....an,bn]
要求如题目。
求大神!!!!请问一个笔试题,要求复杂度O(n),空间O(1)
算法,面试题

------解决方案--------------------
洗牌算法有多种解释,一种是打乱顺序,一种是LZ的题目。打乱顺序的好理解且实现起来不麻烦。LZ的题目似乎没有正确的答案,翻来覆去都是那几个相互抄袭的文章。给的解释经不起推敲,6个元素的还可以,元素多几个解释就乱了。

还是去找老外的原著吧,抄袭人家的文章都不认真,哎……
------解决方案--------------------
引用:
完美洗牌算法,还是有点复杂的
http://user.qzone.qq.com/414353346/blog/1243343118#!app=2&via=QZ.HashRefresh&pos=1243343118
证明3^i的代表元进行的置换不相交且完全覆盖有点小复杂啊~