给定一个长度为偶数的数组arr,假设长度为N*2,左部分:arr[L1……Ln],右部分:arr[R1……Rn],请把arr调整成arr[L1,R1,L2,R2,L3,R3,…,Ln,Rn]。...func main() {
arr := []int{1, 2, 3, 4, 5, 6, 7, 8}
shuffle(arr)
fmt.Println(arr)
}
// 数组的长度为...return 2 * i
} else {
return 2*(i-(len2/2)) - 1
}
}
// 数组的长度为len,调整前的位置是i,返回调整之后的位置...base *= 3
k++
}
// 3^k -1
// 当前要解决长度为base-1的块,一半就是再除2
half...// 旋转完成后,从L开始算起,长度为base-1的部分进行下标连续推
cycles(arr, L, base-1, k)
// 解决了前base-1的部分,剩下的部分继续处理