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 相关文章推荐
JavaScript 序列化对象实现代码
Dec 18 Javascript
动态改变div的z-index属性的简单实例
Aug 08 Javascript
node.js中的buffer.toJSON方法使用说明
Dec 14 Javascript
AngularJs bootstrap搭载前台框架——准备工作
Sep 01 Javascript
Angular.js中ng-if、ng-show和ng-hide的区别介绍
Jan 20 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
详解Vue学习笔记入门篇之组件的内容分发(slot)
Jul 17 Javascript
浅谈Vue的加载顺序探讨
Oct 25 Javascript
vue拖拽排序插件vuedraggable使用方法详解
Aug 21 Javascript
highCharts提示框中显示当前时间的方法
Jan 18 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
Mar 06 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 xml文件操作代码(一)
2009/03/20 PHP
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
PHP stristr() 函数(不区分大小写的字符串查找)
2010/06/03 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
JS清空多文本框、文本域示例代码
2014/02/24 Javascript
jquery高级编程的最佳实践详解
2014/03/23 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
node.js中的events.emitter.removeListener方法使用说明
2014/12/10 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
Angular2 之 路由与导航详细介绍
2017/05/26 Javascript
解决vue 绑定对象内点击事件失效问题
2018/09/05 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
Swift中的协议(protocol)学习教程
2016/07/08 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
pandas带有重复索引操作方法
2018/06/08 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
浅析Python 字符编码与文件处理
2020/09/24 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
高品质和独特的产品世界:Creations and Collections
2018/01/07 全球购物
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
企划主管岗位职责
2013/12/12 职场文书
建筑工程毕业生自我鉴定
2014/01/14 职场文书
学生吸烟检讨书
2014/09/14 职场文书
办护照工作证明
2014/10/01 职场文书
出国签证在职证明范本
2014/11/24 职场文书
让生命充满爱观后感
2015/06/08 职场文书
教师见习总结范文
2015/06/23 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书