JS实现的数组全排列输出算法


Posted in Javascript onMarch 19, 2015

本文实例讲述了JS实现的数组全排列输出算法。分享给大家供大家参考。具体分析如下:

这段js代码对数组进行全排列输出,改进了一些老的代码
从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。

function permute(input) {
  var permArr = [],
  usedChars = [];
  function main(input){
    var i, ch;
    for (i = 0; i < input.length; i++) {
      ch = input.splice(i, 1)[0];
      usedChars.push(ch);
      if (input.length == 0) {
        permArr.push(usedChars.slice());
      }
      main(input);
      input.splice(i, 0, ch);
      usedChars.pop();
    }
    return permArr
  }
  return main(input);
};
console.log(permute([5, 3, 7, 1]));

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript 利用Cookie记录用户登录信息
Dec 08 Javascript
收集json解析的四种方法分享
Jan 17 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
jquery实现pager控件示例
Apr 09 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
May 26 Javascript
微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析
Nov 27 Javascript
laydate如何根据开始时间或者结束时间限制范围
Nov 15 Javascript
解决vuecli3中img src 的引入问题
Aug 04 Javascript
原生JavaScript实现贪吃蛇游戏
Nov 04 Javascript
微信小程序自定义底部弹出框动画
Nov 18 Javascript
JS监听Esc 键触发事键
Apr 14 Javascript
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 #Javascript
JavaScript实现在标题栏上显示当前日期的方法
Mar 19 #Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 #Javascript
JavaScript将一个数组插入到另一个数组的方法
Mar 19 #Javascript
JS中prototype的用法实例分析
Mar 19 #Javascript
JS获取Table中td值的方法
Mar 19 #Javascript
JavaScript使用yield模拟多线程的方法
Mar 19 #Javascript
You might like
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
解析php curl_setopt 函数的相关应用及介绍
2013/06/17 PHP
Jquery CheckBox全选方法代码附js checkbox全选反选代码
2010/06/09 Javascript
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
js工具方法弹出蒙版
2013/05/08 Javascript
JS实现局部选择打印和局部不选择打印
2014/04/03 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
jQuery prototype冲突的2种解决方法(附demo示例下载)
2016/01/21 Javascript
nodejs入门教程三:调用内部和外部方法示例
2017/04/24 NodeJs
原生JS实现N级菜单的代码
2017/05/21 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
ES6小技巧之代替lodash
2019/06/07 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
JS实现json数组排序操作实例分析
2019/10/28 Javascript
JavaScript如何处理移动端拍摄图片旋转问题
2019/11/16 Javascript
详解JavaScript原型与原型链
2020/11/16 Javascript
Python切片操作深入详解
2018/07/27 Python
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
详解用Python实现自动化监控远程服务器
2019/05/18 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
东方红海科技面试题软件测试方面
2012/02/08 面试题
迎新晚会邀请函
2014/02/01 职场文书
爱护公物标语
2014/06/24 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
Redis实战高并发之扣减库存项目
2022/04/14 Redis