您的位置:首页 > Web前端 > JavaScript

JS练习题②:数组的全排序

2015-12-04 18:11 615 查看
练习题的题目是:【对['a','b','c']进行全排序】

1、方法1:

/*  
全排列(递归交换)算法的实现思路  
1、将第一个位置分别放置各个不同的元素;  
2、对剩余的位置进行全排列(递归);  
3、递归出口为只对一个元素进行全排列。  
*/ 
function funOne(text){
(function fn(n){
//为第n个位置选择元素
for(var i=n; i<text.length; i++){
swapChar(text, i, n);
//判断数组中剩余的待全排列的元素是否大于1个
if(n+1 < text.length-1){
fn(n+1); //从第n+1个下标进行全排列
}else{
showResult(text); //显示一组结果
}
swapChar(text,i,n);
}
})(0);
};

// 交换
function swapChar(text, i, j){
if(i != j){
var temp = text[i];
text[i] = text[j];
text[j] = temp;
}
};

// 显示
var count = 0;
function showResult(text){
console.log("Line "+ (++count) +": "+ text);
};在控制台中执行方法,funOne(["a","b","c"])
输出的结果为:

:

2、方法2:

function funTwo(test){
for(var i=test.length; i--;){
for(var j=test.length; j--;){
for (var k=test.length; k--;){
if(test[i]!==test[j] && test[j]!==test[k] && test[i]!==test[k]){
console.log(test[i] + test[j] + test[k]);
}
}
}
}
};输出结果就是abc的全排序。
这里是已知test.length = 3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript