Heim  >  Artikel  >  Web-Frontend  >  Sechs Algorithmen für die vollständige Permutation in JavaScript

Sechs Algorithmen für die vollständige Permutation in JavaScript

高洛峰
高洛峰Original
2016-11-26 10:02:481633Durchsuche

Gesamtpermutation ist ein Algorithmus mit einer Zeitkomplexität von: O(n!) Ich habe vor zwei Tagen zufällig an dieses Problem gedacht und es zusammenfassen Algorithmen, unter denen die dynamische Schleife ähnlich ist. Der Backtracking-Algorithmus ist relativ umständlich zu implementieren, daher werden zur Vereinfachung für die Leser 6 Typen zusammengefasst. Alle Algorithmen sind in JavaScript geschrieben und können direkt ausgeführt werden.
Algorithmus 1: Austausch (rekursiv)
1 ="Content-Type" content="text/html; charset=utf-8" /> ;/head>
6.

2011.05


42.
43.
Algorithmus 2: Link (Rekursion)
1.html Typ" content="text/html; charset=utf-8" />
4. Vollständige Permutation (Rekursiver Link) - Mengliao Software
5.
6.

Vollständige Permutation
>
2012.03.


13. 1. Legen Sie das Quellarray als Eingabearray fest und das Ergebnisarray speichert die Anordnungsergebnisse (initialisiert als leeres Array).
2. Verknüpfen Sie jedes Element des Quellarrays mit dem Ergebnisarray eins nach dem anderen (ein neues Array-Objekt generieren);
15. Die verknüpften Elemente aus dem ursprünglichen Array löschen (ein neues Array-Objekt generieren). Quellarray und Ergebnisarray als Parameter, bis das Quellarray leer ist, dann eine Anordnung ausgeben.
17. */
18. var count=0;
1920.     document.write("P"+ ++count+": "+arr+"
"); 
21. } 
22. Funktion perm(arr) { 
23.     (function fn(source, result) { 
24.         if (source.length == 0) 
25.             show(result); 
26.         else
27.             for (var i = 0 ; i < source.length;
28.              🎜>29.     })(arr, []); 
30. } 
31. perm(["e1", "e2", "e3", "e4"]); 
32.  
33.  
34. 
算法三:回溯(递归)
1.  
2.  
3.      
4.     Vollständige Permutation (Rekursiver Backtrack) – Mengliao Software 
5.  
6.  
7. 

Vollständige Permutation (rekursiver Backtrack)
 
8. Mengliao Software Studio – Bosun Network Co., Ltd.
 
9. 29.03.2012

 
10.  
54.  
55. 
算法五:排序(非递归)
1.  
2.  
3.      
4.     Vollständige Permutation (nicht rekursive Sortierung) – Mengliao Software 
5.  
6.  
7. 

 
8. Vollständige Permutation (nicht rekursive Sortierung)
 
9. Mengliao Software Studio – Bosun Network Co., Ltd.
 
10. 30.03.2012

 
11.  
66.  
67. 
算法六:求模(非递归)
1.  
2.  
3.      
4.     Vollständige Permutation (nicht rekursives Modulo) – Mengliao Software 
5.  
6.  
7. 

Vollständige Permutation (nicht rekursives Modulo)
 
8. Mengliao Software Studio – Bosun Network Co., Ltd.
 
9. 29.03.2012

 
10.