本文主要介绍JS实现的排列组合算法,并结合完整的实例详细分析排列组合算法的原理和javascript相关实现技巧。有需要的可以参考一下。
本文阐述了用JS实现的排列组合算法。分享给你,供你参考,如下:
数学上有排列组合,用来计算概率。
例如,从四个数字中随机选择两个数字。从5个号码中随机抽取3个号码的情况。(这里只考虑没有顺序的情况)。
公式:C(n,m)=n!/[m!(n-m)!]=n * (n-1) *.* (n-m1)/[1 * 2 *.* m],如C(5,2)=[5*4]/[1*2]=10。
图示:有四个数字:1,2,3,4。从这四个数字中,如果选择任意两个数字有多少种情况:[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]有六种情况。
用下面的代码实现从5个数字中随机抽取3个数字的情况(不分先后)。
脚本
var array=[1,2,3,4,5];
for(var i=0,len1=array.length我len1i ) {
var a2=array . concat();
/*
排除之前已合并的数据。
比如第一次,i[0]=1。这时有两层循环,只有2~5个循环。
第二次,i[1]=2。此时有2层循环,只有3~5个循环。
同样,也将三层循环与两层循环进行比较。
*/
a2.splice(0,I 1);
for(var j=0,len2=a2.lengthj len2j ) {
var a3=a2 . concat();
a3 .拼接(0,j ^ 1);
for(var k=0,len3=a3.lengthk len3k ) {
console . log(array[I] a2[j] a3[k]);
}
}
}
/脚本
运行结果:
如果需要几个数字,可以嵌套循环几次。
感兴趣的朋友可以使用
在线HTML/CSS/JavaScript代码运行工具
:http://tools.jb51.net/code/HtmlJsRun来测试上述代码的运行效果。对更多JavaScript相关内容感兴趣的读者可以查看我们的专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript数学运算用法总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》和《JavaScript查找算法技巧总结》。
希望这篇文章对大家的JavaScript编程有所帮助。