JavaScript怎样实现元素全排列

  介绍

这篇文章主要介绍JavaScript怎样实现元素全排列,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

<>强排列(排列/安排)

<强>概念

n个不同元素中任意选取米(m & lt;=n)个元素进行排列,所有排列情况的个数叫做排列数,其值等于:

A =, n !,/, (n 安康;m) !

!表示数学中的阶乘运算符,可以通过以下函数实现:

function 阶乘(n), {   ,if  (n ===, 0, | |, n ===, 1), {   ,return  1;   ,   ,}else  if  (n  & lt;, 0), {   ,return 零;   ,   ,}else  {   ,return  n  *,阶乘(n 作用;1);   ,}   }      console.log(阶乘(4));,//,24

当n=m时,称为全排列,其值等于:

A =, n !

全排列相当于将所有元素进行排序,得到所有不同顺序情况的个数;

<强>分析

利用阶乘函数,通过上述数学公式只能得到所有情况的个数值,不容易得到具体的每种情况,要获取每种情况的输出值的话需要另寻他法;

用数组举例分析:

全排列:

,,,(1、2、3)=比;(,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,(1、2、3),
,,,,,,,,,,,,,,,,,,,(1、3、2),
,,,,,,,,,,,,,,,,,,,(2,1,3),
,,,,,,,,,,,,,,,,,,,(2、3、1],
,,,,,,,,,,,,,,,,,,,(3、1、2),
,,,,,,,,,,,,,,,,,,,(3,2,1)
,,,,,,,,,,,,,,,,]
,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,共6种情况

,,,树状图表示:
,,,
,,,,,1,,,,,,2,,,,,,3
,,,,//,,,,//,,,,/\
,,,2,,3,,1,,3,,1,,2
,,,|,,|,,|,,|,,|,,|
,,,3,,2,,3,,1,,2,,1,,=祝辞,6

3个元素中选取2个时:(n=3, m=2)

,,,(1、2、3)=比;(,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,[1,2],
,,,,,,,,,,,,,,,,,,,[1,3],
,,,,,,,,,,,,,,,,,,,(2,1),
,,,,,,,,,,,,,,,,,,,(2、3),
,,,,,,,,,,,,,,,,,,,(3,1),
,,,,,,,,,,,,,,,,,,,(3 2)
,,,,,,,,,,,,,,,,]
,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,共6种情况
,,,
,,,树状图表示:
,,,
,,,,,1,,,,,,2,,,,,,3
,,,,//,,,,//,,,,/\
,,,2,,3,,1,,3,,1,,2,,=祝辞,6

<强>实现

let  arr =, (1, 2, 3];/*   参数,a 为输入数组,   元素个数,n 为,a 的长度,   选取个数为,m;   */function 排列(a, m), {      ,//保存最终输出结果   ,let  result =, [];   ,   ,//定义,m 值默认等于,n,即全排列   ,let  n =, a.length;=,,m  m  | |, n;   ,   ,//定义递归函数保存结果到数组中   ,//_a 为输入数组,   ,//tmpResult 为保存单个情况结果的数组   ,function 复发(_a, tmpResult =, []), {   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

JavaScript怎样实现元素全排列