小编Jon*_*ell的帖子

如何在适当的位置重新排序数组以将偶数索引项放在奇数之前?

我有一个排序数组,我想重新排序,以便先前甚至索引的项目在开头,然后是奇数索引项目.

例如:[a, b, c, d, e, f]=> [a, c, e, b, d, f].

我也将(另外)想要做相反的事情,首先使用奇数索引:

例如:[a, b, c, d, e, f]=> [b, d, f, a, c, e].

我知道我可以创建单独的奇数/偶数数组然后重新合并它们,但性能是关键,我正在尝试找到一个单循环,就地解决方案,避免分配和使用临时数组.

语境:

我递归搜索一个移动的游戏树(带有alpha-beta的minimax)并且我正在尝试实现Lazy SMP,我在其他线程上搜索相同的位置,但尝试以略微不同的顺序移动,将结果保存到共享(换位) )表,以提高主搜索线程的效率.

澄清:

起始数组已经排序,我希望保持偶数/奇数索引内的顺序.也就是说,我不想将这些事情和赔率分组在一起并最终说出来[f, b, d, e, c, a].

另外,我严格按索引值排序,而不是存储在那里的项目.因此,任何涉及项值的搜索谓词的方法都不起作用.

虽然我用C#编写,但我不想使用LINQ,因为我需要将代码移植到没有LINQ的系统.

我希望有一种方法可以循环一次数组并执行一系列项目交换,这样我最终会得到我所描述的排序.我一直在纸上尝试,但还没有任何工作.

澄清2:

我用字母而不是数字更新了示例,并在我向后调整奇数/偶数示例时进行了交换.我想要两个.

最终我试图模拟循环原始数组,但跳过所有其他项目仍然查看每个项目.有两个循环我会做以下事情:

// Case 1: Regular order
for (int i = 0; i < items.Length; i ++)
{
    // Process
}


// Case 2: Even indexes first
for (int i …
Run Code Online (Sandbox Code Playgroud)

c# algorithm smp

6
推荐指数
2
解决办法
886
查看次数

标签 统计

algorithm ×1

c# ×1

smp ×1