从大的'N'元素阵列中选择'k'元素,使得它们的相互差异的总和最小

时间:2013-10-20 06:31:24

标签: arrays algorithm sorting

例如,我说x1,x2..,xn.我必须从这n个元素中选择'k'个元素,以便 - 让所选元素为y1,y2,y3,..yk - |y1-y2| + |y2-y3| + |y3-y1| + ...的总和1}}将是最小的。

换句话说,K元素之间的相互差异之和应小于或等于K元素的任何其他选择。

元素x1,x2..xn未排序,可能包含重复项。

我有最基本的解决方案,即对数组进行排序 - 让排序后的数组为z - 并从i = 0 to i = n-k-1中滑动k个元素的窗口,并将它们排序为相互之和差异值采用以下常见形式:

(k-1)*z[0] + (k-3)*z[1] + (k-5)*z[2] + ........  -(k-1)*z[k-1].

找到最小的相互差异给了我答案。

获取相互差异的最小总和就足够了,因为其余代码只将其作为输入。

我需要优化或找到更好的算法来执行此操作。感谢。

0 个答案:

没有答案