JavaScript全排列的六种算法 具体实现_javascript技巧
程序员文章站
2022-04-28 20:10:15
...
全排列是一种时间复杂度为:O(n!)的算法,前两天给学生讲课,无意间想到这个问题,回来总结了一下,可以由7种算法求解,其中动态循环类似回溯算法,实现起来比较繁琐,故总结了6种,以飨读者。所有算法均使用JavaScript编写,可直接运行。
算法一:交换(递归)
Full Permutation(Recursive Swap) - Mengliao Software
算法二:链接(递归)
Full Permutation(Recursive Link) - Mengliao Software
算法三:回溯(递归)
Full Permutation(Recursive Backtrack) - Mengliao Software
算法四:回溯(非递归)
Full Permutation(Non-recursive Backtrack) - Mengliao Software
算法五:排序(非递归)
Full Permutation(Non-recursive Sort) - Mengliao Software
算法六:求模(非递归)
Full Permutation(Non-recursive Modulo) - Mengliao Software
上面的六种算法有些是对位置进行排列,例如回溯、排序等,因为这样可以适应各种类型的元素,而非要求待排列元素一定是数字或字母等。
算法一:交换(递归)
复制代码 代码如下:
Full Permutation(Recursive Swap)
Mengliao Software Studio - Bosun Network Co., Ltd.
2011.05.24
算法二:链接(递归)
复制代码 代码如下:
Full Permutation(Recursive Link)
Mengliao Software Studio - Bosun Network Co., Ltd.
2012.03.29
算法三:回溯(递归)
复制代码 代码如下:
Full Permutation(Recursive Backtrack)
Mengliao Software Studio - Bosun Network Co., Ltd.
2012.03.29
算法四:回溯(非递归)
复制代码 代码如下:
Full Permutation(Non-recursive Backtrack)
Mengliao Software Studio - Bosun Network Co., Ltd.
2012.03.29
算法五:排序(非递归)
复制代码 代码如下:
Full Permutation(Non-recursive Sort)
Mengliao Software Studio - Bosun Network Co., Ltd.
2012.03.30
算法六:求模(非递归)
复制代码 代码如下:
Full Permutation(Non-recursive Modulo)
Mengliao Software Studio - Bosun Network Co., Ltd.
2012.03.29
上面的六种算法有些是对位置进行排列,例如回溯、排序等,因为这样可以适应各种类型的元素,而非要求待排列元素一定是数字或字母等。
上一篇: php phpize报错
推荐阅读
-
JS实现的数组全排列输出算法_javascript技巧
-
JavaScript实现数组全排列、去重及求最大值算法示例
-
javascript实现跳转菜单的具体方法_javascript技巧
-
js阻止事件追加的具体实现_javascript技巧
-
javascript获取隐藏dom的宽高 具体实现_javascript技巧
-
js 调用父窗口的具体实现代码_javascript技巧
-
javascript实现跳转菜单的具体方法_javascript技巧
-
JS动态创建Table,Tr,Td并赋值的具体实现_javascript技巧
-
JS下拉框内容左右移动效果的具体实现_javascript技巧
-
用js来刷新当前页面保留参数的具体实现_javascript技巧