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 相关文章推荐
DHTML 中的绝对定位
Nov 26 Javascript
Web层改进II-用xmlhttp 无声息提交复杂表单
Jan 22 Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 Javascript
学习Angular中作用域需要注意的坑
Aug 17 Javascript
详解堆的javascript实现方法
Nov 29 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
Aug 28 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
Apr 24 Javascript
inquirer.js一个用户与命令行交互的工具详解
May 18 Javascript
vue 授权获取微信openId操作
Nov 13 Javascript
vue3中的组件间通信
Mar 31 Vue.js
create-react-app开发常用配置教程
Jun 25 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
论建造顺序的重要性
2020/03/04 星际争霸
PHP生成二维码的两个方法和实例
2014/07/01 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
PHP引用返回用法示例
2016/05/28 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
php接口技术实例详解
2016/12/07 PHP
jquery ajax 同步异步的执行 return值不能取得的解决方案
2012/01/08 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
2014/01/16 Javascript
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
IE9+已经不对document.createElement向下兼容的解决方法
2015/09/14 Javascript
深入分析jsonp协议原理
2015/09/26 Javascript
js判断图片加载完成后获取图片实际宽高的方法
2016/02/25 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
JavaScript文件的同步和异步加载的实现代码
2017/08/19 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
解决Mac安装scrapy失败的问题
2018/06/13 Python
Python实现多级目录压缩与解压文件的方法
2018/09/01 Python
将python文件打包成EXE应用程序的方法
2019/05/22 Python
浅析Python面向对象编程
2020/07/10 Python
python的launcher用法知识点总结
2020/08/07 Python
Python中Selenium模块的使用详解
2020/10/09 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
马歇尔耳机官网:Marshall Headphones
2020/02/04 全球购物
如何利用cmp命令比较文件
2016/04/11 面试题
网站编辑求职信
2013/10/17 职场文书
高中毕业的自我鉴定
2013/12/09 职场文书
医务人员自我评价
2014/01/26 职场文书
英语教育专业毕业生求职信
2014/08/28 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
婚宴父亲致辞
2015/07/27 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书