JavaScript实现穷举排列(permutation)算法谜题解答


Posted in Javascript onDecember 29, 2014

谜题

穷举一个数组中各个元素的排列

策略

减而治之、递归

JavaScript解


/**

 * Created by cshao on 12/23/14.

 */
function getPermutation(arr) {

  if (arr.length == 1) {

    return [arr];

  }
  var permutation = [];

  for (var i=0; i<arr.length; i++) {

    var firstEle = arr[i];

    var arrClone = arr.slice(0);

    arrClone.splice(i, 1);

    var childPermutation = getPermutation(arrClone);

    for (var j=0; j<childPermutation.length; j++) {

      childPermutation[j].unshift(firstEle);

    }

    permutation = permutation.concat(childPermutation);

  }

  return permutation;

}
var permutation = getPermutation(['a','b','c']);

console.dir(permutation);

结果

[ [ 'a', 'b', 'c' ],

  [ 'a', 'c', 'b' ],

  [ 'b', 'a', 'c' ],

  [ 'b', 'c', 'a' ],

  [ 'c', 'a', 'b' ],

  [ 'c', 'b', 'a' ] ]
Javascript 相关文章推荐
固定表格行列(expression)在IE下适用
Jul 25 Javascript
js 判断图片是否加载完以及实现图片的预下载
Aug 14 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
Sep 17 Javascript
jqueryUI tab标签页代码分享
Oct 09 jQuery
webpack配置之后端渲染详解
Oct 26 Javascript
react-native fetch的具体使用方法
Nov 01 Javascript
javascript实现数字配对游戏的实例讲解
Dec 14 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
vue2.0页面前进刷新回退不刷新的实现方法
Jul 31 Javascript
vue微信分享出来的链接点开是首页问题的解决方法
Nov 28 Javascript
基于vue.js实现分页查询功能
Dec 29 Javascript
MutationObserver在页面水印实现起到的作用详解
Jul 07 Javascript
浅谈JavaScript Array对象
Dec 29 #Javascript
JavaScript实现N皇后问题算法谜题解答
Dec 29 #Javascript
jQuery中dequeue()方法用法实例
Dec 29 #Javascript
jQuery中queue()方法用法实例
Dec 29 #Javascript
浅谈JavaScript function函数种类
Dec 29 #Javascript
JavaScript异步加载浅析
Dec 28 #Javascript
JavaScript设计模式之工厂方法模式介绍
Dec 28 #Javascript
You might like
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
php apache开启跨域模式过程详解
2019/07/08 PHP
PHP上传图片到数据库并显示的实例代码
2019/12/20 PHP
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
jquery ajax例子返回值详解
2012/09/11 Javascript
jquery解析XML字符串和XML文件的方法说明
2014/02/21 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
JS实现电商放大镜效果
2017/08/24 Javascript
Vue引用Swiper4插件无法重写分页器样式的解决方法
2018/09/27 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
2016/06/07 Python
Python三级目录展示的实现方法
2016/09/28 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
Python中多个数组行合并及列合并的方法总结
2018/04/12 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
pytorch 获取tensor维度信息示例
2020/01/03 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
解决Ubuntu18中的pycharm不能调用tensorflow-gpu的问题
2020/09/17 Python
迪奥美国官网:Dior美国
2019/12/07 全球购物
美容院营销方案
2014/03/05 职场文书
党员教师一句话承诺
2014/05/30 职场文书
党员四风剖析材料
2014/08/27 职场文书
党员自我剖析材料范文
2014/10/06 职场文书
青年文明号汇报材料
2014/12/23 职场文书
撤诉申请书法院范本
2015/05/18 职场文书
党支部考察意见范文
2015/06/02 职场文书