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 DOM操作小结与实例
Jan 07 Javascript
javascript suggest效果 自动完成实现代码分享
Feb 17 Javascript
JavaScript var声明变量背后的原理示例解析
Oct 12 Javascript
Jquery.Form 异步提交表单的简单实例
Mar 03 Javascript
jQuery实现预加载图片的方法
Mar 17 Javascript
js跨域请求的5中解决方式
Jul 02 Javascript
JS实现侧边栏鼠标经过弹出框+缓冲效果
Mar 29 Javascript
微信小程序文章详情页面实现代码
Sep 10 Javascript
微信小程序云开发实现增删改查功能
May 17 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
Sep 25 Javascript
VUE+elementui组件在table-cell单元格中绘制微型echarts图
Apr 20 Javascript
微信小程序实现音乐播放页面布局
Dec 11 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会员权限控制实现原理分析
2011/05/29 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
PHP错误Warning:mysql_query()解决方法
2015/10/24 PHP
javascript iframe编程相关代码
2009/12/28 Javascript
在图片上显示左右箭头类似翻页的代码
2013/03/04 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
JavaScript获取多个数组的交集简单实例
2013/11/11 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
如何利用模板将HTML从JavaScript中抽离
2016/10/08 Javascript
性能优化之代码优化页面加载速度
2017/03/01 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
一份超级详细的Vue-cli3.0使用教程【推荐】
2018/11/15 Javascript
Python操作json数据的一个简单例子
2014/04/17 Python
Python的Django框架中设置日期和字段可选的方法
2015/07/17 Python
Python爬取qq music中的音乐url及批量下载
2017/03/23 Python
[原创]教女朋友学Python3(二)简单的输入输出及内置函数查看
2017/11/30 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
python2.7实现邮件发送功能
2018/12/12 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
Viking Direct爱尔兰:办公用品和家具
2019/11/21 全球购物
质检员的岗位职责
2013/11/15 职场文书
环保建议书200字
2014/05/14 职场文书
银行求职信范文
2014/05/26 职场文书
会员活动策划方案
2014/08/19 职场文书
微观世界观后感
2015/06/10 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
Windows Server 2019 域控制器安装图文教程
2022/04/28 Servers
Windows7下FTP搭建图文教程
2022/08/05 Servers