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 相关文章推荐
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
JavaScript获取当前日期是星期几的方法
Apr 06 Javascript
js实现鼠标划过给div加透明度的方法
May 25 Javascript
jQuery旋转木马式幻灯片轮播特效
Dec 04 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
react开发教程之React 组件之间的通信方式
Aug 12 Javascript
小程序ios音频播放没声音问题的解决
Jul 11 Javascript
详解Vue之父子组件传值
Apr 01 Javascript
微信小程序实现列表左右滑动
Nov 19 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 Vue.js
浅谈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数据的三种方法
2008/06/05 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
2015/08/18 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
JavaScript 的方法重载效果
2009/08/07 Javascript
html文本框提示效果的示例代码
2014/06/28 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
Vuex 入门教程
2018/01/10 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
在Vue项目中使用Typescript的实现
2019/12/19 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
[01:07:57]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第二场 1月19日
2021/03/11 DOTA
python先序遍历二叉树问题
2017/11/10 Python
Python数据存储之 h5py详解
2019/12/26 Python
tensorflow 实现数据类型转换
2020/02/17 Python
巴西手表购物网站:eclock
2019/03/19 全球购物
群胜软件Java笔试题
2012/09/29 面试题
经典c++面试题四
2015/05/14 面试题
某公司.Net方向面试题
2014/04/24 面试题
什么是索引指示器
2012/08/20 面试题
高级工程师岗位职责
2013/12/15 职场文书
教师网络培训感言
2014/03/09 职场文书
环境日宣传活动总结
2014/07/09 职场文书
就业协议书怎么填
2014/09/15 职场文书
办公室岗位职责
2015/02/04 职场文书
nginx前后端同域名配置的方法实现
2021/03/31 Servers
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL