假设我有以下三个列表
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的小数值.
对于第二个列表中的每个项目,维护一个浮点计数器.添加上一步中计算的值,并在数学上将其四舍五入为最接近的整数(保持原始浮点计数器完好无损).将其插入目的地列表中的此位置,并将计数器增加1以说明它.对第二个列表中的所有列表成员重复此操作.
对所有列表重复步骤2-5.
编辑:这也有O(n)的优点,这总是很好:)