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 相关文章推荐
jQuery Selector选择器小结
May 06 Javascript
js Html结构转字符串形式显示代码
Nov 15 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
May 13 Javascript
关于jquery的多个选择器的使用示例
Oct 18 Javascript
ECMAScript6中Map/WeakMap详解
Jun 12 Javascript
JS实现当前页居中分页效果的方法
Jun 18 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
node.JS二进制操作模块buffer对象使用方法详解
Feb 06 Javascript
原生js实现购物车
Sep 23 Javascript
Vue3 响应式侦听与计算的实现
Nov 11 Javascript
vue3中的组件间通信
Mar 31 Vue.js
使用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实现MySQL数据库备份与还原类实例
2014/12/09 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
phpcms的分类名称和类别名称的调用
2017/01/05 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
JavaScript Event学习第九章 鼠标事件
2010/02/08 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
js读取csv文件并使用json显示出来
2015/01/09 Javascript
jquery图片切换插件
2015/03/16 Javascript
javascript每日必学之封装
2016/02/23 Javascript
Bootstrap CSS布局之列表
2016/12/15 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
微信小程序实现日历效果
2018/12/28 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
2019/09/30 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
[03:53]2016国际邀请赛中国区预选赛第三日TOP10精彩集锦
2016/06/29 DOTA
[59:36]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第二场
2018/04/04 DOTA
python数据处理实战(必看篇)
2017/06/11 Python
详解python中的 is 操作符
2017/12/26 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
python3注册全局热键的实现
2020/03/22 Python
Python 炫技操作之合并字典的七种方法
2020/04/10 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
Python使用正则表达式实现爬虫数据抽取
2020/08/17 Python
工商管理实习生自我鉴定范文
2013/12/18 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
教师批评与自我批评发言稿
2014/10/15 职场文书
病危通知书样本
2015/04/17 职场文书
Vue Element UI自定义描述列表组件
2021/05/18 Vue.js