将数组重新排列为与另一个数组相比最佳

我已经达到了我的程序中最简单的部分,但我有点迷失,关于我如何能够做到这一点并同时保持高效。

attacker= {3,10,14,15,17,18}; defender = {1,5,7,9,12,18}; 

所以这两个都是两个长度相同的数组,也是排序的。 为了将其置于上下文中,两个数组中的数字表示用户输入的滚动。

除了这种风险之外,允许防守者重新安排他的arrays,以便他可以赢得更多的战斗。 如果他愿意,他可以将5和3配对。

我迷失了如何做到这一点,而不是非常低效或容易出错。

我会提出这个算法:

合并两个数组并标记防御者(d)或攻击者(a)的元素:

 dadddadaaada 1 3 5 7 9 10 12 14 15 17 18 18 

(对于两个相同的元素,首先放置防守者)。

然后选择ad模式所在的对; 这些将是后卫赢得的战斗:

 dadddadaaada 1 3 5 7 9 10 12 14 15 17 18 18 ^ ^ ^ ^ ^ ^ 

并且首先安排获胜的数字,然后输掉失败的数字:

 defender = {5, 12, 18, 1, 7, 9}