置换所有邻居的阵列

时间:2018-03-21 13:26:13

标签: arrays algorithm array-algorithms

我有这个循环数组,我需要以某种方式置换它,以便每个元素都改变了它的邻居。

示例:

1 2 3 4 5 

变为

3 1 4 2 5

限制是阵列需要至少5个元素,否则不可能。

试图解决它很长一段时间,我确信它有一个名字,但我没有运气在网上找到答案。

2 个答案:

答案 0 :(得分:1)

这实际上很容易解决,你只需要找到一些适用于数组中奇数和偶数元素的策略:

首先选择偶数位置的所有数字,然后选择奇数位置的第一个数字,然后是奇数位置的最后一个数字,最后是奇数位置的其余数字。

12345变为13524,因此适用于奇数元素。

123456变为135264,因此适用于偶数元素。

0123456789变为0246819357,另一个例子。

答案 1 :(得分:0)

我假设你知道选择 - 置换 - 非选择范式来解决这些问题。话虽如此,在选择你需要做的是你选择时确保你没有选择邻居,例如你当前的排列是1 2 3 4 5,即你当前的字符串是1,休息是2 3 4 5现在你必须从2 3 4 5中选择,但你当前的字符串有1,所以你不应该选择2.你应该选择3。等等。