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 相关文章推荐
JavaScript中的事件处理
Jan 16 Javascript
javascript 写类方式之四
Jul 05 Javascript
uploadify在Firefox下丢失session问题的解决方法
Aug 07 Javascript
动态加载JS文件的三种方法
Nov 08 Javascript
浅析JS操作DOM的一些常用方法
May 13 Javascript
VUEJS实战之利用laypage插件实现分页(3)
Jun 13 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
Aug 04 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
Mar 06 Javascript
微信小程序上传文件到阿里OSS教程
May 20 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 Javascript
javascript中layim之查找好友查找群组
Feb 06 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
hessian 在PHP中的使用介绍
2010/12/13 PHP
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
php把session写入数据库示例
2014/02/26 PHP
php常见的魔术方法详解
2014/12/25 PHP
PHP中返回引用类型的方法
2015/04/03 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
js取消单选按钮选中示例代码
2013/11/14 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
初识Node.js
2015/03/20 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
DOM 事件的深入浅出(二)
2016/12/05 Javascript
Angular路由简单学习
2016/12/26 Javascript
js实现瀑布流效果(自动生成新的内容)
2017/03/16 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
Python利用Beautiful Soup模块创建对象详解
2017/03/27 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
中学运动会广播稿
2014/01/19 职场文书
社会学专业求职信
2014/02/24 职场文书
2014社区三八妇女节活动总结
2014/03/01 职场文书
中学生演讲稿
2014/04/26 职场文书
同学聚会策划方案
2014/06/06 职场文书
先进党员事迹材料
2014/12/24 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书