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中append、insertBefore、after与insertAfter的简单用法与注意事项
Apr 04 Javascript
两个listbox实现选项的添加删除和搜索
Mar 01 Javascript
jquery实现点击页面计算点击次数
Jan 23 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
Oct 26 Javascript
jQuery插件实现带圆点的焦点图片轮播切换
Jan 18 Javascript
Js的Array数组对象详解
Feb 22 Javascript
springMVC结合AjaxForm上传文件
Jul 12 Javascript
深入分析javascript中console命令
Aug 14 Javascript
Node.js使用Express创建Web项目详细教程
Mar 31 Javascript
Angular resolve基础用法详解
Oct 03 Javascript
js cavans实现静态滚动弹幕
May 21 Javascript
Vue实现简单的跑马灯
May 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
中英文字符串翻转函数
2008/12/09 PHP
PHP5常用函数列表(分享)
2013/06/07 PHP
php解决和避免form表单重复提交的几种方法
2016/08/31 PHP
thinkPHP框架实现类似java过滤器的简单方法示例
2018/09/05 PHP
window.open的功能全解析
2006/10/10 Javascript
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
初学JavaScript第二章
2008/09/30 Javascript
JavaScript 继承详解(二)
2009/07/13 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
JavaScript获取页面上被选中文字的方法技巧
2015/03/13 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
微信小程序如何刷新当前界面的实现方法
2019/06/07 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
[49:11]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第二场 12.20
2020/12/23 DOTA
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
python3中int(整型)的使用教程
2017/03/23 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Pandas过滤dataframe中包含特定字符串的数据方法
2018/11/07 Python
Python定义函数实现累计求和操作
2020/05/03 Python
pycharm 对代码做静态检查操作
2020/06/09 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
中东奢侈品购物网站:Ounass
2020/09/02 全球购物
银行毕业实习自我鉴定
2013/09/19 职场文书
小学教师师德感言
2014/02/10 职场文书
高中生操行评语
2014/04/25 职场文书
新手上路标语
2014/06/20 职场文书
生物科学专业自荐书
2014/06/20 职场文书
学生不参加考试检讨书
2015/02/19 职场文书