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 相关文章推荐
区分JS中的undefined,null,&quot;&quot;,0和false
Mar 08 Javascript
Jquery实现弹出层分享微博插件具备动画效果
Apr 03 Javascript
基于JavaScript如何实现私有成员的语法特征及私有成员的实现方式
Oct 28 Javascript
jQuery获取复选框被选中数量及判断选择值的方法详解
May 25 Javascript
详解JavaScript中js对象与JSON格式字符串的相互转换
Feb 14 Javascript
AngularJS 防止页面闪烁的方法
Mar 09 Javascript
jquery 实现拖动文件上传加载进度条功能
Mar 18 jQuery
JavaScript实现一个带AI的井字棋游戏源码
May 21 Javascript
详解如何在Node.js的httpServer中接收前端发送的arraybuffer数据
Nov 11 Javascript
JS实现带阴历的日历功能详解
Jan 24 Javascript
怎么使用javascript深度拷贝一个数组
Jun 06 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php自定义函数实现二维数组排序功能
2016/07/20 PHP
PHP使用curl函数发送Post请求的注意事项
2016/11/26 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
php实现评论回复删除功能
2017/05/23 PHP
JavaScript DOM 学习第二章 编辑文本
2010/02/19 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
javascript 构造函数方式定义对象
2015/01/02 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python实现用户管理系统
2018/01/10 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
Surfdome西班牙:世界上最受欢迎的生活方式品牌
2019/02/13 全球购物
一道SQL存储过程面试题
2016/10/07 面试题
4s客服专员岗位职责
2013/12/01 职场文书
环保专业大学生职业规划设计
2014/01/10 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
青年文明号申报材料
2014/12/23 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Python几种酷炫的进度条的方式
2022/04/11 Python
mysql幻读详解实例以及解决办法
2022/06/16 MySQL