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 相关文章推荐
页面版文本框智能提示JS代码
Nov 20 Javascript
json原理分析及实例介绍
Nov 29 Javascript
动态的改变IFrame的高度实现IFrame自动伸展适应高度
Dec 28 Javascript
JS实现点击链接取消跳转效果的方法
Jan 24 Javascript
JavaScript异步回调的Promise模式封装实例
Jun 07 Javascript
js添加select下默认的option的value和text的方法
Oct 19 Javascript
JavaScript中的this关键字使用方法总结
Mar 13 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
Jan 08 Javascript
jQuery 实现双击编辑表格功能
Jun 19 jQuery
关于 angularJS的一些用法
Nov 29 Javascript
在微信小程序中渲染HTML内容3种解决方案及分析与问题解决
Jan 12 Javascript
解决vant-UI库修改样式无效的问题
Nov 03 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下对字符串的递增运算代码
2010/08/21 PHP
解析php中curl_multi的应用
2013/07/17 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
PHP+ajax实现获取新闻数据简单示例
2018/05/08 PHP
PHP工厂模式、单例模式与注册树模式实例详解
2019/06/03 PHP
JavaScript学习笔记(十)
2010/01/17 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
js实现短信发送倒计时功能(正则验证)
2017/02/10 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
vue.js实现刷新当前页面的方法教程
2017/07/05 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
jQuery实现可以扩展的日历
2020/12/01 jQuery
python字符串替换的2种方法
2014/11/30 Python
Python基本语法经典教程
2016/03/11 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
带你认识Django
2019/01/15 Python
Python实现新型冠状病毒传播模型及预测代码实例
2020/02/05 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
初三物理教学反思
2014/01/21 职场文书
违反校纪校规检讨书
2014/02/15 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
领导班子民主生活会整改措施(工商局)
2014/09/21 职场文书
2015迎新晚会开场白
2015/05/29 职场文书
团队拓展训练心得体会
2016/01/12 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
python工具dtreeviz决策树可视化和模型可解释性
2022/03/03 Python
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android