全排列javascript算法
2007-08-23 13:27
344 查看
全排列算法:
1.利用数组实现
<script>
function getNumberLoop(arr){
if(arr.length<2){
return arr;
}else if(arr.length==2){
var newArray=new Array();
newArray[0]=arr;
newArray[1]=new Array();
newArray[1][0]=arr[1];
newArray[1][1]=arr[0];
return newArray;
}else{
var item=arr.splice(0,1);
var arr=getNumberLoop(arr);
var newArray=new Array();
for(var i=0;i<arr.length;i++){
for(var j=0;j<=arr[i].length;j++){
var spliceArray=new Array();
for(var k=0;k<arr[i].length;k++){
spliceArray[k]=arr[i][k];
}
spliceArray.splice(j,0,item);
newArray[i*(arr[i].length+1)+j]=spliceArray;
}
}
return newArray;
}
}
var array=['A','B','C','D','E'];
alert(getNumberLoop(array).length);
</script>
2.利用字符串实现
<script>
function getNumberLoop(str){
if(str.length<2){
return new Array(str);
}else if(str.length==2){
var newArray=new Array();
newArray[0]=str.charAt(0)+str.charAt(1);
newArray[1]=str.charAt(1)+str.charAt(0);
return newArray;
}else{
var Char=str.charAt(0);
var str=str.slice(1);
var arr=getNumberLoop(str);
var newArray=new Array();
for(var i=0;i<arr.length;i++){
for(var j=0;j<=arr[i].length;j++){
var sliceStr=arr[i];
sliceStr=sliceStr.slice(0,j)+Char+sliceStr.slice(j);
newArray[i*(arr[i].length+1)+j]=sliceStr;
}
}
return newArray;
}
}
var string="ABCD"
alert(getNumberLoop(string));
</script>
1.利用数组实现
<script>
function getNumberLoop(arr){
if(arr.length<2){
return arr;
}else if(arr.length==2){
var newArray=new Array();
newArray[0]=arr;
newArray[1]=new Array();
newArray[1][0]=arr[1];
newArray[1][1]=arr[0];
return newArray;
}else{
var item=arr.splice(0,1);
var arr=getNumberLoop(arr);
var newArray=new Array();
for(var i=0;i<arr.length;i++){
for(var j=0;j<=arr[i].length;j++){
var spliceArray=new Array();
for(var k=0;k<arr[i].length;k++){
spliceArray[k]=arr[i][k];
}
spliceArray.splice(j,0,item);
newArray[i*(arr[i].length+1)+j]=spliceArray;
}
}
return newArray;
}
}
var array=['A','B','C','D','E'];
alert(getNumberLoop(array).length);
</script>
2.利用字符串实现
<script>
function getNumberLoop(str){
if(str.length<2){
return new Array(str);
}else if(str.length==2){
var newArray=new Array();
newArray[0]=str.charAt(0)+str.charAt(1);
newArray[1]=str.charAt(1)+str.charAt(0);
return newArray;
}else{
var Char=str.charAt(0);
var str=str.slice(1);
var arr=getNumberLoop(str);
var newArray=new Array();
for(var i=0;i<arr.length;i++){
for(var j=0;j<=arr[i].length;j++){
var sliceStr=arr[i];
sliceStr=sliceStr.slice(0,j)+Char+sliceStr.slice(j);
newArray[i*(arr[i].length+1)+j]=sliceStr;
}
}
return newArray;
}
}
var string="ABCD"
alert(getNumberLoop(string));
</script>
相关文章推荐
- javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
- JavaScript实现穷举排列(permutation)算法谜题解答
- javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
- 全排列算法 --javascript 实现
- JavaScript 排列组合精髓算法
- JavaScript 排列组合算法 1、2、3、4、5、6、7 任意的排列组合不重复的 个数
- JavaScript实现穷举排列(permutation)算法谜题解答
- javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
- c语言实现排列组合算法问题
- 【前端笔试】JavaScript实现字符串全排列
- Google工程师详述Google的搜索结果排列算法 (ZT)
- DES 算法的 Javascript、PHP 及 Perl 的源代码
- Javascript 地图经度纬度之间的距离的算法(轉)
- javascript 红黑树算法与说明
- 算法 全排列问题,组合问题,子集问题
- 算法提高 ADV-103 逆序排列
- javascript 排序(Sorting)算法与说明
- 全排列算法思想
- JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
- 基于javascript实现按圆形排列DIV元素(三)