栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

JavaScript全排列的六种算法 具体实现

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript全排列的六种算法 具体实现

全排列是一种时间复杂度为:O(n!)的算法,前两天给学生讲课,无意间想到这个问题,回来总结了一下,可以由7种算法求解,其中动态循环类似回溯算法,实现起来比较繁琐,故总结了6种,以飨读者。所有算法均使用Javascript编写,可直接运行。
算法一:交换(递归)
复制代码 代码如下:
 
 
     
    Full Permutation(Recursive Swap) - Mengliao Software 
 
 

Full Permutation(Recursive Swap)
 
Mengliao Software Studio - Bosun Network Co., Ltd.
 
2011.05.24

 
 
 


算法二:链接(递归)
复制代码 代码如下:
 
 
     
    Full Permutation(Recursive link) - Mengliao Software 
 
 

Full Permutation(Recursive link)
 
Mengliao Software Studio - Bosun Network Co., Ltd.
 
2012.03.29

 
 
 


算法三:回溯(递归)
复制代码 代码如下:
 
 
     
    Full Permutation(Recursive Backtrack) - Mengliao Software 
 
 

Full Permutation(Recursive Backtrack)
 
Mengliao Software Studio - Bosun Network Co., Ltd.
 
2012.03.29

 
 
 


算法四:回溯(非递归)
复制代码 代码如下:
 
 
     
    Full Permutation(Non-recursive Backtrack) - Mengliao Software 
 
 

 
Full Permutation(Non-recursive Backtrack)
 
Mengliao Software Studio - Bosun Network Co., Ltd.
 
2012.03.29

 
 
 


算法五:排序(非递归)
复制代码 代码如下:
 
 
     
    Full Permutation(Non-recursive Sort) - Mengliao Software 
 
 

 
Full Permutation(Non-recursive Sort)
 
Mengliao Software Studio - Bosun Network Co., Ltd.
 
2012.03.30

 
 
 


算法六:求模(非递归)
复制代码 代码如下:
 
 
     
    Full Permutation(Non-recursive Modulo) - Mengliao Software 
 
 

Full Permutation(Non-recursive Modulo)
 
Mengliao Software Studio - Bosun Network Co., Ltd.
 
2012.03.29

 
 
 


上面的六种算法有些是对位置进行排列,例如回溯、排序等,因为这样可以适应各种类型的元素,而非要求待排列元素一定是数字或字母等。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/111005.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号