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 相关文章推荐
IE innerHTML,outerHTML所引起的问题
Jun 04 Javascript
jquery $(document).ready() 与window.onload的区别
Dec 28 Javascript
JavaScript日期类型的一些用法介绍
Mar 02 Javascript
js鼠标点击按钮切换图片-图片自动切换-点击左右按钮切换特效代码
Sep 02 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
Nov 01 Javascript
浅谈Javascript中的Label语句
Dec 14 Javascript
js 用于检测类数组对象的函数方法
May 02 Javascript
Vue.js项目部署到服务器的详细步骤
Jul 17 Javascript
小程序清理本地缓存的方法
Aug 17 Javascript
Vuex 快速入门(简单易懂)
Sep 20 Javascript
使用vue完成微信公众号网页小记(推荐)
Apr 28 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
Oct 24 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
ThinkPHP CURD方法之where方法详解
2014/06/18 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
2014/03/13 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
javascript日期处理函数,性能优化批处理
2015/09/06 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
Angular 5.0 来了! 有这些大变化
2017/11/15 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
js中apply和Math.max()函数的问题及区别介绍
2018/03/27 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
QML实现圆环颜色选择器
2019/09/25 Javascript
简单了解Vue computed属性及watch区别
2020/07/10 Javascript
Python获取Linux系统下的本机IP地址代码分享
2014/11/07 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
python判断输入日期为第几天的实例
2018/11/13 Python
详解python项目实战:模拟登陆CSDN
2019/04/04 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
浅谈html5与APP混合开发遇到的问题总结
2018/03/20 HTML / CSS
澳大利亚家具商店:Freedom
2020/12/17 全球购物
类、抽象类、接口的差异
2016/06/13 面试题
公务员职业生涯规划书范文  
2014/01/19 职场文书
中年人生感言
2014/02/04 职场文书
加强机关作风建设心得体会
2014/10/22 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
西安兵马俑导游词
2015/02/02 职场文书
安全生产协议书
2016/03/22 职场文书
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers