JS实现的排列组合算法示例


Posted in Javascript onJuly 16, 2019

本文实例讲述了JS实现的排列组合算法。分享给大家供大家参考,具体如下:

在数学中有排列组合,用来计算概率。

比如:从4个数字中,任意选择两个的情况。从5个数字中任意选择3个数字的情况。(这里我们只考虑没有顺序的情况)。

公式:C(n,m)=n!/[m!(n-m)!]=n*(n-1)*...*(n-m+1)/[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个的情况(不考虑顺序)。

<script>
var array = [1, 2, 3, 4, 5];
for(var i = 0, len1 = array.length; i < len1; i++) {
 var a2 = array.concat();
 /*
 排除之前已经组合过的数据
 比如:第一次的时候,i[0] = 1, 这个时候2层循环, 只循环 2~5, 
 第二次的时候, i[1] = 2, 这个时候2层循环, 只循环 3~5
 同理:3层循环也是相比于2层循环来
 */
 a2.splice(0, i + 1);
 for(var j = 0, len2 = a2.length; j < len2; j++) {
 var a3 = a2.concat();
 a3.splice(0, j + 1);
 for(var k = 0, len3 = a3.length; k < len3; k++) {
  console.log(array[i] + ' ' +a2[j] + ' ' + a3[k]);
 }
 }
}
</script>

运行结果:

JS实现的排列组合算法示例

需要取几个数字,就嵌套循环几次。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript实现 在光标处插入指定内容
May 25 Javascript
asp.net下利用js实现返回上一页的实现方法小集
Nov 24 Javascript
理清apply(),call()的区别和关系
Aug 14 Javascript
jQuery图片轮播的具体实现
Sep 11 Javascript
javascript中简单的进制转换代码实例
Oct 26 Javascript
javascript验证上传文件的类型限制必须为某些格式
Nov 14 Javascript
JavaScript AOP编程实例
Jun 16 Javascript
Angularjs使用ng-repeat中$even和$odd属性的注意事项
Dec 31 Javascript
webpack引入eslint配置详解
Jan 22 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
Apr 21 Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
Dec 13 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
Jul 16 #Javascript
详解微信小程序支付流程与梳理
Jul 16 #Javascript
如何在项目中使用log4.js的方法步骤
Jul 16 #Javascript
JAVA面试题 static关键字详解
Jul 16 #Javascript
微信小程序实现下拉框功能
Jul 16 #Javascript
javascript中的this作用域详解
Jul 15 #Javascript
微信小程序页面上下滚动效果
Nov 18 #Javascript
You might like
php学习之数据类型之间的转换代码
2011/05/29 PHP
Win下如何安装PHP的APC拓展
2013/08/07 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
sina的lightbox效果。
2007/01/09 Javascript
javascript 读取xml,写入xml 实现代码
2009/07/10 Javascript
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
使用Jquery实现点击文字后变成文本框且可修改
2013/09/21 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
JS实现上下左右对称的九九乘法表
2016/02/22 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
python实现快递价格查询系统
2020/03/03 Python
Matplotlib使用Cursor实现UI定位的示例代码
2020/03/12 Python
Python作用域与名字空间原理详解
2020/03/21 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
梅花魂教学反思
2014/04/25 职场文书
结对共建协议书
2014/08/20 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
三年级上册科学教学计划
2015/01/21 职场文书
2015年财务人员个人工作总结
2015/07/27 职场文书
民警忠诚教育心得体会
2016/01/23 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
redis 解决库存并发问题实现数量控制
2022/04/08 Redis