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用于查询操作的实现代码
May 10 Javascript
js导入导出excel(实例代码)
Nov 25 Javascript
node.js中的fs.lchmod方法使用说明
Dec 16 Javascript
CSS+JS实现点击文字弹出定时自动关闭DIV层菜单的方法
May 12 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
May 15 Javascript
JavaScript操作表单实例讲解(上)
Jun 20 Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 Javascript
JS获取当前时间的实例代码(昨天、今天、明天)
Nov 13 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 Javascript
vue父组件给子组件的组件传值provide inject的方法
Oct 23 Javascript
vue任意关系组件通信与跨组件监听状态vue-communication
Oct 18 Javascript
vue实现锚点定位功能
Jun 29 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学习教程之第1天
2008/06/15 PHP
PHP实现的封装验证码类详解
2013/06/18 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
基于PHP实现短信验证码接口(容联运通讯)
2016/09/06 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
2010/10/20 Javascript
基于jquery 的一个progressbar widge
2010/10/29 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
js导入导出excel(实例代码)
2013/11/25 Javascript
EasyUI的doCellTip实现鼠标放到单元格上提示单元格内容
2016/08/24 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
2017/07/18 jQuery
浅析java线程中断的办法
2018/07/29 Javascript
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
[06:09]辉夜杯主赛事开幕式
2015/12/25 DOTA
[06:07]DOTA2-DPC中国联赛 正赛 Ehome vs VG 选手采访
2021/03/11 DOTA
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
2019/06/04 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
Python编写万花尺图案实例
2021/01/03 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
市场开发与营销专业求职信
2013/12/31 职场文书
会议活动邀请函
2014/01/27 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
四十年同学聚会致辞
2015/07/28 职场文书
银行求职信怎么写
2019/06/20 职场文书
CSS中妙用 drop-shadow 实现线条光影效果
2021/11/11 HTML / CSS
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技