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 相关文章推荐
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
Apr 27 Javascript
jQuery EasyUI API 中文文档 - Calendar日历使用
Oct 19 Javascript
js 链式延迟执行DOME
Jan 04 Javascript
基于jQuery的简单九宫格实现代码
Aug 09 Javascript
浅析jQuery中使用$所引发的问题
May 29 Javascript
vue插件tab选项卡使用小结
Oct 27 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 Javascript
vue定义全局变量和全局方法的方法示例
Aug 01 Javascript
微信小程序自定义单项选择器样式
Jul 25 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
Aug 12 Javascript
vue自定义树状结构图的实现方法
Oct 18 Javascript
Vue+axios封装请求实现前后端分离
Oct 23 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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
ThinkPHP5实现作业管理系统中处理学生未交作业与已交作业信息的方法
2016/11/12 PHP
js常用函数 不错
2006/09/08 Javascript
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
js下判断 iframe 是否加载完成的完美方法
2010/10/26 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
JavaScript中九种常用排序算法
2014/09/02 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
AngularJS内置指令
2015/02/04 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
jQuery CSS3相结合实现时钟插件
2016/01/08 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
基于iview的router常用控制方式
2019/05/30 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
numpy.where() 用法详解
2019/05/27 Python
python设置环境变量的原因和方法
2019/06/24 Python
python中68个内置函数的总结与介绍
2020/02/24 Python
浅谈Python3中print函数的换行
2020/08/05 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
大学军训感言300字
2014/03/09 职场文书
土地转让协议书范本
2014/04/15 职场文书
药店促销活动策划方案
2014/08/24 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
初三语文教学反思
2016/03/03 职场文书
django中websocket的具体使用
2022/01/22 Python
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python
Java的Object类的九种方法
2022/04/13 Java/Android