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插件开发示例代码
Nov 06 Javascript
javascript教程之不完整的继承(js原型链)
Jan 13 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
Apr 06 Javascript
原生JavaScript实现合并多个数组示例
Sep 21 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
javascript数组遍历的方法实例分析
Sep 13 Javascript
JS实现颜色梯度与渐变效果完整实例
Dec 30 Javascript
解决webpack打包速度慢的解决办法汇总
Jul 06 Javascript
angularJs中ng-model-options设置数据同步的方法
Sep 30 Javascript
vue实现自定义日期组件功能的实例代码
Nov 06 Javascript
玩转Koa之核心原理分析
Dec 29 Javascript
vue3 watch和watchEffect的使用以及有哪些区别
Jan 26 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数据库用户认证系统代码
2007/03/22 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
Js实现京东无延迟菜单效果实例(demo)
2017/06/02 Javascript
JavaScript设计模式之工厂模式简单实例教程
2018/07/03 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
vue 项目接口管理的实现
2019/01/17 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
javascript实现弹幕墙效果
2019/11/28 Javascript
在树莓派2或树莓派B+上安装Python和OpenCV的教程
2015/03/30 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python3 操作符重载方法示例
2017/11/23 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
python监控nginx端口和进程状态
2019/09/06 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
python三引号如何输入
2020/07/06 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
Python爬虫教程知识点总结
2020/10/19 Python
解决python的空格和tab混淆而报错的问题
2021/02/26 Python
python 实现有道翻译功能
2021/02/26 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
CSS3 实现footer 固定在底部(无论页面多高始终在底部)
2019/10/15 HTML / CSS
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
创立科技Java面试题
2015/11/29 面试题
会计电算化专业个人的自我评价
2013/11/24 职场文书
优秀求职自荐信怎样写
2013/12/18 职场文书
关于责任的演讲稿
2014/05/20 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
带刀到教室的检讨书
2014/10/04 职场文书
毕业典礼邀请函
2015/01/31 职场文书
会计人员岗位职责
2015/02/03 职场文书