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 相关文章推荐
jquery tools 系列 scrollable(2)
Sep 06 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
Sep 02 Javascript
JavaScript 实现打印,打印预览,打印设置
Dec 30 Javascript
JavaScript forEach()遍历函数使用及介绍
Jul 08 Javascript
jquery实现通用的内容渐显Tab选项卡效果
Sep 07 Javascript
深入理解vue2.0路由如何配置问题
Jul 18 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
Sep 01 jQuery
Vue.js项目模板搭建图文教程
Sep 20 Javascript
vue-router配合ElementUI实现导航的实例
Feb 11 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
node使用Mongoose类库实现简单的增删改查
Nov 08 Javascript
Vuex 单状态库与多模块状态库详解
Dec 11 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
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
Javascript常用运算符(Operators)-javascript基础教程
2007/12/14 Javascript
用javascript获取当页面上鼠标光标位置和触发事件的对象的代码
2009/12/09 Javascript
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
禁用页面部分JavaScript方法的具体实现
2013/07/31 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
基于bootstrap的文件上传控件bootstrap fileinput
2016/12/23 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
JavaScript多线程运行库Nexus.js详解
2017/12/22 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
Vuex实现数据增加和删除功能
2019/11/11 Javascript
Python中set与frozenset方法和区别详解
2016/05/23 Python
解决python删除文件的权限错误问题
2018/04/24 Python
python破解zip加密文件的方法
2018/05/31 Python
Python定义一个跨越多行的字符串的多种方法小结
2018/07/19 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
详解python深浅拷贝区别
2019/06/24 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
你对IPv6了解程度
2016/02/09 面试题
线程问题:wait()方法是定义在哪个类里面
2015/07/07 面试题
小学防溺水制度
2014/01/29 职场文书
教师教育心得体会
2016/01/19 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
HTML5页面音频自动播放的实现方式
2021/06/21 HTML / CSS
修改并编译golang源码的操作步骤
2021/07/25 Golang