首頁 >web前端 >js教程 >JavaScript全排列的六種演算法 具體實作_javascript技巧

JavaScript全排列的六種演算法 具體實作_javascript技巧

WBOY
WBOY原創
2016-05-16 17:30:531083瀏覽

全排列是一種時間複雜度為: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 
 
 

Fullull 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 
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn