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 相关文章推荐
extjs form textfield的隐藏方法
Dec 29 Javascript
JavaScript在XHTML中的用法详解
Apr 11 Javascript
js获取php变量的实现代码
Aug 10 Javascript
Js表格万条数据瞬间加载实现代码
Feb 20 Javascript
使用jquery prev()方法找到同级的前一个元素
Jul 11 Javascript
jquery使用经验小结
May 20 Javascript
angular基于路由控制ui-router实现系统权限控制
Sep 27 Javascript
分享19个JavaScript 有用的简写写法
Jul 07 Javascript
vue使用ajax获取后台数据进行显示的示例
Aug 09 Javascript
Vuex 使用及简单实例(计数器)
Aug 29 Javascript
vue动画效果实现方法示例
Mar 18 Javascript
微信小程序调用后台service教程详解
Nov 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 smarty模版引擎中的缓存应用
2009/12/02 PHP
PHP循环结构实例讲解
2014/02/10 PHP
php常用的安全过滤函数集锦
2014/10/09 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
ubuntu下安装nodejs以及升级的办法
2015/05/08 NodeJs
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
VUE v-model表单数据双向绑定完整示例
2019/01/21 Javascript
[16:27]DOTA2 HEROS教学视频教你分分钟做大人-艾欧
2014/06/11 DOTA
Python enumerate遍历数组示例应用
2008/09/06 Python
python实现FTP服务器服务的方法
2017/04/11 Python
python3.4爬虫demo
2019/01/22 Python
Python自动抢红包教程详解
2019/06/11 Python
pyhton中__pycache__文件夹的产生与作用详解
2019/11/24 Python
HTML5 Canvas像素处理使用接口介绍
2012/12/02 HTML / CSS
2014年圣诞节倒计时网页的制作过程
2014/12/05 HTML / CSS
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
美国酒店控股公司:Choice Hotels
2018/06/15 全球购物
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
物业保安岗位职责
2014/07/02 职场文书
美术课外活动总结
2014/07/08 职场文书
地陪导游欢迎词
2015/01/26 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
商场广播稿范文
2015/08/19 职场文书
高三物理教学反思
2016/02/20 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript
Mysql binlog日志文件过大的解决
2021/10/05 MySQL
Python+tkinter实现高清图片保存
2022/03/13 Python
CSS精灵图的原理与使用方法介绍
2022/03/17 HTML / CSS
pandas中pd.groupby()的用法详解
2022/06/16 Python
Nginx跨域问题解析与解决
2022/08/05 Servers