当前位置:  开发笔记 > 编程语言 > 正文

将N个列表中的项目组合成一个平衡分布的好算法?

如何解决《将N个列表中的项目组合成一个平衡分布的好算法?》经验,为你挑选了1个好方法。

假设我有以下三个列表

A1
A2
A3

B1
B2

C1
C2
C3
C4
C5

我想将它们组合成一个列表,每个列表中的项目尽可能均匀分布,如下所示:

C1
A1
C2
B1
C3
A2
C4
B2
A3
C5

我正在使用.NET 3.5/C#,但我正在寻找更多如何处理它然后特定的代码.

编辑:我需要保持原始列表中元素的顺序.



1> Andrew Rolli..:

    获取最多成员的列表副本.这将是目的地列表.

    然后选择下一个最大数字的列表.

    将目标列表长度除以较小的长度,以得到大于1的小数值.

    对于第二个列表中的每个项目,维护一个浮点计数器.添加上一步中计算的值,并在数学上将其四舍五入为最接近的整数(保持原始浮点计数器完好无损).将其插入目的地列表中的此位置,并将计数器增加1以说明它.对第二个列表中的所有列表成员重复此操作.

    对所有列表重复步骤2-5.

编辑:这也有O(n)的优点,这总是很好:)


@AndrewRollings你可以详细解释一下,或者`pseudocode`对我来说绰绰有余吗?我无法清楚地理解你的答案.
推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有