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 相关文章推荐
如何将php数组或者对象传递给javascript
Mar 20 Javascript
js闭包实例汇总
Nov 09 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
Dec 19 Javascript
jquery可定制的在线UEditor编辑器
Nov 17 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
Jan 08 Javascript
JavaScript正则表达式匹配 div  style标签
Mar 15 Javascript
基于vuejs+webpack的日期选择插件
May 21 Javascript
讲解vue-router之什么是嵌套路由
May 28 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
js在HTML的三种引用方式详解
Aug 29 Javascript
vue路由切换时取消之前的所有请求操作
Sep 01 Javascript
ES6学习教程之Promise用法详解
Nov 22 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 开发环境配置(测试开发环境)
2010/04/28 PHP
php shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
PHP判断是否是微信打开,浏览器打开的方法
2018/03/14 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
JS 获取span标签中的值的代码 支持ie与firefox
2009/08/24 Javascript
js/ajax跨越访问-jsonp的原理和实例(javascript和jquery实现代码)
2012/12/27 Javascript
原生javaScript实现图片延时加载的方法
2014/12/22 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
react中fetch之cors跨域请求的实现方法
2018/03/14 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
利用Python查看目录中的文件示例详解
2017/08/28 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
PyQt4编程之让状态栏显示信息的方法
2019/06/18 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
2019/07/11 Python
python标准库OS模块函数列表与实例全解
2020/03/10 Python
HTML5 Canvas画线技巧——实现绘制一个像素宽的细线
2013/08/02 HTML / CSS
String和StringBuffer的区别
2015/08/13 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
狼和鹿教学反思
2014/02/05 职场文书
《锄禾》教学反思
2014/04/08 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
2015中秋祝酒词
2015/08/12 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
一行代码python实现文件共享服务器
2021/04/22 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers