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 相关文章推荐
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
Oct 01 Javascript
通过js动态操作table(新增,删除相关列信息)
May 23 Javascript
javascript检测对象中是否存在某个属性判断方法小结
May 19 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
May 08 Javascript
jQuery创建DOM元素实例解析
Jan 19 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
学好js,这些js函数概念一定要知道【推荐】
Jan 19 Javascript
Bootstrap 网格系统布局详解
Mar 19 Javascript
windows下vue-cli导入bootstrap样式
Apr 25 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
JS实现图片拖拽交换效果
Nov 30 Javascript
vue-preview动态获取图片宽高并增加旋转功能的实现
Jul 29 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实现连接access数据库并转txt写入的方法
2017/02/08 PHP
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
js换图片效果可进行定时操作
2014/06/09 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
JS高级运动实例分析
2016/12/20 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
解决vue里碰到 $refs 的问题的方法
2017/07/13 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
JS随机密码生成算法
2019/09/23 Javascript
vue 解决遍历对象显示的顺序不对问题
2019/11/07 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
SQLite3中文编码 Python的实现
2017/01/11 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
python机器学习库xgboost的使用
2020/01/20 Python
使用Django清空数据库并重新生成
2020/04/03 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python 创建TCP服务器的方法
2020/07/28 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
python绘制雷达图实例讲解
2021/01/03 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
《童年的发现》教学反思
2014/02/14 职场文书
淘宝店策划方案
2014/06/07 职场文书
师范生见习报告范文
2014/11/03 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
投标售后服务承诺书
2015/04/29 职场文书
《清澈的湖水》教学反思
2016/02/17 职场文书
Tomcat弱口令复现及利用
2022/05/06 Servers