欢迎光临散文网 会员登陆 & 注册

数组排列

2023-08-10 03:02 作者:十三他很帅  | 我要投稿

生成数组元素的所有排列组合(包含重复项)

  • 使用递归。

  • 对于给定数组中的每个元素,创建其余元素的所有部分排列。

  • 使用 Array.prototype.map() 将元素与每个部分排列组合,然后使用 Array.prototype.reduce() 将所有排列组合成一个数组。

  • 基本情况是 Array.prototype.length 等于 21 时。

警告:此函数的执行时间随着数组元素的增加而呈指数增长。超过8到10个可能会导致卡死。

如果只是想生成并使用每个排列,而不是存储所有的排列,可以考虑使用一个生成器函数。生成器可以按需生成排列,而不是一次生成所有的排列。

下面是一个使用JavaScript生成器的例子。它使用了Heap's Algorithm,这是一个非递归算法:


数组排列的评论 (共 条)

分享到微博请遵守国家法律