JS练习题②:数组的全排序
练习题的题目是:【对["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
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: jsp页面中的$(param.xxx)
- 下一篇: JavaScript数组练习