Algorithm 将整数数组划分为两个大小相等的子数组?

Algorithm 将整数数组划分为两个大小相等的子数组?,algorithm,data-structures,Algorithm,Data Structures,我遇到这个问题,找不到合理的解决办法。 如何将未排序的整数数组划分为两个大小相等的子数组,以使子数组和之间的差值最小 例如:给定一个整数数组a[N](未排序),我们希望将数组拆分为a1和a2,其中a1.length==a2.length即N/2和(a1中所有数字之和-a2中所有数字之和)应为最小值 为了简单起见,让我们假设所有的数字都是正数,但可能会有重复。虽然其他人提到这是一个带有修改的分区问题,但我想更具体地指出,这实际上是两台机器的一个特例。也就是说,如果解决两台机器的完工时间问题并获得一

我遇到这个问题,找不到合理的解决办法。 如何将未排序的整数数组划分为两个大小相等的子数组,以使子数组和之间的差值最小

例如:给定一个整数数组a[N](未排序),我们希望将数组拆分为a1和a2,其中a1.length==a2.length即N/2和(a1中所有数字之和-a2中所有数字之和)应为最小值


为了简单起见,让我们假设所有的数字都是正数,但可能会有重复。

虽然其他人提到这是一个带有修改的分区问题,但我想更具体地指出,这实际上是两台机器的一个特例。也就是说,如果解决两台机器的完工时间问题并获得一个值
m
,则获得最小差值
2*m-和(arr中的i:i)

正如维基百科的文章所说,这个问题对于两台以上的机器来说是NP完全问题。但是,在您的案例中,通常提供 近似答案,是两机和三机情况下的最佳多项式时间,给定一个非递增顺序的排序列表


.

原始数组是否已排序?LOL@SparKot好吧,我不知道那个细节。比如说未分类的。看起来你有很多。虽然不是一个精确的复制品,但看起来这里的答案可能也适用。有人能为其编写代码吗?正如@JerryCoffin所说的,这是一个简单修改后的分区问题。我可以补充一点,修改的问题是
a1.length==a2.length
,这可以通过从最大数组中获取最小数并将它们放入另一个数组中直到满足条件为止来解决。