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 相关文章推荐
Tab切换组件(选项卡功能)实例代码
Nov 21 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
javascript检查某个元素在数组中的索引值
Mar 30 Javascript
基于JS实现回到页面顶部的五种写法(从实现到增强)
Sep 03 Javascript
JavaScript中数组的各种操作的总结(必看篇)
Feb 13 Javascript
jQuery简单实现遍历单选框的方法
Mar 06 Javascript
TypeScript入门-接口
Mar 30 Javascript
老生常谈javascript的面向对象思想
Aug 22 Javascript
原生js实现移动端触摸轮播的示例代码
Dec 22 Javascript
基于Vue实现拖拽功能
Jul 29 Javascript
基于Node.js的大文件分片上传示例
Jun 19 Javascript
layui添加动态菜单与选项卡
Jul 26 Javascript
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
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
2014/10/15 PHP
PHP中你应该知道的require()文件包含的正确用法
2015/06/12 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
srcElement表格样式
2006/09/03 Javascript
JS类库Bindows1.3中的内存释放方式分析
2007/03/08 Javascript
javascript比较文档位置
2008/04/08 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
Javascript之String对象详解
2016/06/08 Javascript
解决vue动态为数据添加新属性遇到的问题
2018/09/18 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
vue实现搜索功能
2019/05/28 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
Python中bisect的用法
2014/09/23 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
python中逻辑与或(and、or)和按位与或异或(&amp;、|、^)区别
2020/08/05 Python
css3 矩阵的使用详解
2018/03/20 HTML / CSS
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
中等生评语大全
2014/05/04 职场文书
社团活动总结怎么写
2014/06/30 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
2014年变电站工作总结
2014/12/19 职场文书
2015年度企业工作总结
2015/05/21 职场文书
地道战观后感300字
2015/06/04 职场文书
健康教育主题班会
2015/08/14 职场文书
迎客户欢迎词三篇
2019/09/27 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS