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 相关文章推荐
Javascript Tab 导航插件 (23个)
Jun 11 Javascript
javascript options属性集合操作代码
Dec 28 Javascript
来自国外的14个图片放大编辑的jQuery插件整理
Oct 20 Javascript
js实现广告漂浮效果的小例子
Jul 02 Javascript
如何学习Javascript入门指导
Nov 01 Javascript
一个JavaScript递归实现反转数组字符串的实例
Oct 14 Javascript
JavaScript动态修改网页元素内容的方法
Mar 21 Javascript
JS实现可关闭的对联广告效果代码
Sep 14 Javascript
js判断登陆用户名及密码是否为空的简单实例
May 16 Javascript
JavaScript实现图片轮播组件代码示例
Nov 22 Javascript
前端页面文件拖拽上传模块js代码示例
May 19 Javascript
Vue使用Ref跨层级获取组件的步骤
Jan 25 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采用XML-RPC构造Web Service实例教程
2014/07/16 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
php时间函数用法分析
2016/05/28 PHP
PHP简单留言本功能实现代码
2017/06/09 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
2007/04/12 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
jQuery的bind()方法使用详解
2015/07/15 Javascript
探讨JavaScript标签位置的存放与功能有无关系
2016/01/15 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
2017/11/14 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
解决layui上传文件提示上传异常,实际文件已经上传成功的问题
2018/08/19 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
JavaScript多种页面刷新方法小结
2019/04/04 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
微信小程序之高德地图多点路线规划过程示例详解
2021/01/18 Javascript
python实现批量转换文件编码(批转换编码示例)
2014/01/23 Python
python端口扫描系统实现方法
2014/11/19 Python
Python控制多进程与多线程并发数总结
2016/10/26 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
土耳其家居建材网站:Koçtaş
2016/11/22 全球购物
一年级数学教学反思
2014/02/01 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
教师师德师风整改措施
2014/10/24 职场文书
2014年反洗钱工作总结
2014/11/22 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL
python可视化大屏库big_screen示例详解
2021/11/23 Python
Django+Nginx+uWSGI 定时任务的实现方法
2022/01/22 Python