我试图从一个列表中找到与列表大小相同或更小的所有排列。在
例如:
>>>allPermutations([a,b])
[[a,b], [b,a], [a], [b]]
这是我目前用python编写的迭代代码。我不确定它目前的效率有多高。在
^{pr2}$我很确定算法会产生n的和!从1->;n排列中快速增长。到目前为止,我已经创建了一种递归的方法来完成它,它的速度非常慢,因为它要执行许多重复的操作。我一直试图通过迭代来实现,但我不知道如何限制重复操作。我正在使用python,但是psuedo代码也会对我有很大帮助。任何帮助都将不胜感激。提前谢谢!在
可能会对所有可能大小的列表遍历所有排列。澄清:
我很确定你的
permutations.add()
和curSet.add()
和fullSet.add()
调用会导致你的例程很快停止。如果你一直改变数组的大小,分配的内存将“耗尽空间”,必须找到一个新的位置。这意味着整个数组被复制。然后再加入另一个元素-冲洗并重复。在您需要计算所需元素的数量,并预先为其分配空间。因此,如果你有5个元素,你需要分配(5!+5*4!+10*3!+10*2!+5)最终结果x 5个元素-中间结果更少。然后在不乱排内存块的情况下填充这些数组;这将使速度显著加快。在
以下措施应该有效:
例如:
^{pr2}$相关问题 更多 >
编程相关推荐