- <htmlxmlns="http://www.w3.org/1999/xhtml">
- <head>
- </head>
- <body>
- <scripttype="text/javascript">
- /*全排列(递归交换)算法
- 1、将第一个位置分别放置各个不同的元素;
- 2、对剩余的位置进行全排列(递归);
- 3、递归出口为只对一个元素进行全排列。
- */
- functionswap(arr,i,j){
- if(i!=j){
- vartemp=arr[i];
- arr[i]=arr[j];
- arr[j]=temp;
- }
- }
- varcount=0;
- functionshow(arr){
- document.write("P<sub>"+++count+"</sub>:"+arr+"<br/>");
- }
- functionperm(arr){
- (functionfn(n){
- //为第n个位置选择元素
- for(vari=n;i<arr.length;i++){
- swap(arr,i,n);
- if(n+1<arr.length-1)
- //判断数组中剩余的待全排列的元素是否大于1个
- fn(n+1);//从第n+1个下标进行全排列
- elseshow(arr);//显示一组结果
- swap(arr,i,n);
- }
- })(0);
- }
- perm(["e1","e2","e3","e4"]);
- </script>
- </body>
- </html>
本文出自 “阿凡达” 博客,请务必保留此出处http://shamrock.blog.51cto.com/2079212/828346