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.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
关于js注册事件的常用方法
Apr 03 Javascript
js获取上传文件大小示例代码
Apr 10 Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
Dec 03 Javascript
图解js图片轮播效果
Dec 20 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
原生js实现class的添加和删除简单代码
Jul 12 Javascript
jQuery实现淡入淡出的模态框
Feb 09 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
Feb 10 Javascript
vue权限问题的完美解决方案
May 08 Javascript
OpenLayers3实现鼠标移动显示坐标
Sep 25 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下使用SimpleXML 处理XML 文件
2010/02/27 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
IE php关于强制下载文件的代码
2008/08/23 Javascript
javascript div 弹出可拖动窗口
2009/02/26 Javascript
window.name代替cookie的实现代码
2010/11/28 Javascript
基于jquery的jqDnR拖拽溢出的修改
2011/02/12 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
2014/05/14 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Vue2 添加数据可视化支持的方法步骤
2019/01/02 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
vue router导航守卫(router.beforeEach())的使用详解
2019/04/19 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
在react-antd中弹出层form内容传递给父组件的操作
2020/10/24 Javascript
[02:31]2014DOTA2国际邀请赛2009专访:干爹表现出乎意料 看好DK杀回决赛
2014/07/20 DOTA
python解决网站的反爬虫策略总结
2016/10/26 Python
python实现批量图片格式转换
2020/06/16 Python
opencv3/C++实现视频背景去除建模(BSM)
2019/12/11 Python
Python类中self参数用法详解
2020/02/13 Python
python numpy实现rolling滚动案例
2020/06/08 Python
Pycharm中配置远程Docker运行环境的教程图解
2020/06/11 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
CSS3实现文字波浪线效果示例代码
2016/11/20 HTML / CSS
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
杭州-飞时达软件有限公司.net笔面试
2012/04/28 面试题
高中课前三分钟演讲稿
2014/08/18 职场文书
个人工作表现自我评价
2015/03/06 职场文书
2016年校园植树节广播稿
2015/12/17 职场文书