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 相关文章推荐
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
Jan 04 Javascript
js展开闭合效果演示代码
Jul 24 Javascript
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
js为空或不是对象问题的快速解决方法
Dec 11 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
Oct 17 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
Spring MVC中Ajax实现二级联动的简单实例
Jul 06 Javascript
Vue组件通信实践记录(推荐)
Aug 15 Javascript
Vue-router结合transition实现app前进后退动画切换效果的实例
Oct 11 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
Aug 12 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
Sep 10 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
Aug 27 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+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
javascript的内存管理详解
2013/08/07 Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
2014/03/13 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
readonly和disabled属性的区别
2015/07/26 Javascript
jquery插件jquery.beforeafter.js实现左右拖拽分隔条对比图片的方法
2015/08/07 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
基于JavaScript实现下拉列表左右移动代码
2017/02/07 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
vue实现拖拽效果
2019/12/23 Javascript
原生JS实现天气预报
2020/06/16 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
Python判断某个用户对某个文件的权限
2016/10/13 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
python and or用法详解
2019/06/26 Python
Python调用C语言程序方法解析
2020/07/07 Python
Pytorch 扩展Tensor维度、压缩Tensor维度的方法
2020/09/09 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
Sephora丝芙兰印尼官方网站:购买化妆品和护肤品
2018/07/02 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
建筑施工实习自我鉴定
2013/09/19 职场文书
销售员岗位职责
2014/06/09 职场文书
企业承诺书格式范文
2015/04/28 职场文书
2016年国陪研修感言
2015/11/18 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
解决xampp安装后Apache无法启动
2022/03/21 Servers
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript