#iterator #permutation #generate #recursion #modification #iteratively #time

permutations_iter

迭代生成排列,不使用递归,O(n) 时间复杂度

2 个版本

0.1.1 2023年2月24日
0.1.0 2023年2月24日

#34 in #modification

MIT 许可证

6KB
93 行代码(不包括注释)

permutations_iter

一个迭代排列生成器 不使用递归,适用于 Rust。

Permutations::of(n) 函数使用 Steinhaus-Johnson-Trotter 算法(Even 的修改版)迭代生成 0..n 的排列。

每次调用 next() 的操作具有 $O(n)$ 的时间和空间复杂度。

没有优化。完全未优化。任何改进都受欢迎。

在 MIT 许可证下发布。


lib.rs:

迭代生成排列,不使用递归。

Permutations.of(n) 函数生成一个迭代器实例,用于生成 0..n 的排列。

Permutations.next() 使用 Steinhaus-Johnson-Trotter 算法(Even 的修改版)在 $O(n)$ 时间内生成下一个排列。

每个迭代器都是单向的。您需要构建一个新的迭代器才能再次迭代。

无运行时依赖