JS实现的数组全排列输出算法

本文介绍两种使用JavaScript实现的排列组合算法。第一种适用于数组输入,通过递归与回溯技术生成所有可能的排列。第二种算法则针对字符串输入,采用递归方式生成字符串的所有可能排列。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function permute(input) {
  var permArr = [],
  usedChars = [];
  function main(input){
    var i, ch;
    for (i = 0; i < input.length; i++) {
      ch = input.splice(i, 1)[0];
      usedChars.push(ch);
      if (input.length == 0) {
        permArr.push(usedChars.slice());
      }
      main(input);
      input.splice(i, 0, ch);
      usedChars.pop();
    }
    return permArr
  }
  return main(input);
};
console.log(permute([5, 3, 7, 1]));

转载自https://www.jb51.net/article/62524.htm

另外一种是根据字符串 来排序

function permutate(str) {
 
    var result=[];
    if(str.length==1){
        return [str]    
    }else{
     
            var preResult=permutate(str.slice(1));
            for (var j = 0; j < preResult.length; j++) {
                for (var k = 0; k < preResult[j].length+1; k++) {
                    var temp=preResult[j].slice(0,k)+str[0]+preResult[j].slice(k);              
                    result.push(temp);              
                }
            }
        return result;
 
    }  
}
 
console.log(permutate("abc"));

 

转载于:https://my.oschina.net/u/2299924/blog/3097818

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值