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 对象的属性和方法4种不同的类型
Mar 19 Javascript
style、 currentStyle、 runtimeStyle区别分析
Aug 01 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
跟我学习javascript的call(),apply(),bind()与回调
Nov 16 Javascript
AngularJS 简单应用实例
Jul 28 Javascript
D3.js实现柱状图的方法详解
Sep 21 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
js简单实现网页换肤功能
Apr 07 Javascript
JS脚本加载后执行相应回调函数的操作方法
Feb 28 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
Jun 09 Javascript
vue项目在线上服务器访问失败原因分析
Aug 14 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抽象工厂模式(Elgg)
2010/03/21 PHP
基于ThinkPHP删除目录及目录文件函数
2020/10/28 PHP
用Javscript实现表单复选框的全选功能
2007/05/25 Javascript
通过隐藏option实现select的联动效果
2009/11/10 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
简单实用jquery版三级联动select示例
2013/07/04 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
关于Ajax的原理以及代码封装详解
2017/09/08 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
layer弹出层全屏及关闭方法
2018/08/17 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
Python使用BeautifulSoup库解析HTML基本使用教程
2016/03/31 Python
谈谈如何手动释放Python的内存
2016/12/17 Python
python与php实现分割文件代码
2017/03/06 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
tensorflow 报错unitialized value的解决方法
2020/02/06 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
2020/02/17 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
巴西手表购物网站:eclock
2019/03/19 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
十佳教师事迹材料
2014/01/11 职场文书
学生党员的自我评价范文
2014/03/01 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
高校群众路线教育实践活动剖析材料
2014/10/10 职场文书
毕业生自荐材料范文
2014/12/30 职场文书
在校学生证明格式
2015/06/24 职场文书
2016年校长新年寄语
2015/08/17 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
Tomcat项目启动失败的原因和解决办法
2022/04/20 Servers
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers