最简单的方法如下:
- 排序列表: O(n lg n)
- 排序列表是第一个排列
- 重复从上一个生成“下一个”排列:
O(n! * <complexity of finding next permutaion>)
步骤3可以通过将下一个排列定义为如果排列列表已排序在当前排列之后直接出现的排列来完成,例如:
1, 2, 2, 31, 2, 3, 21, 3, 2, 22, 1, 2, 32, 1, 3, 22, 2, 1, 3...
查找下一个词典编排是O(n),并且在维基百科页面上以词典编排顺序在Generation标题下给出了简单的排列描述。如果您有雄心壮志,则可以使用简单的更改在O(1)中生成下一个排列



