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 相关文章推荐
IFrame跨域高度自适应实现代码
Aug 16 Javascript
12款经典的白富美型—jquery图片轮播插件—前端开发必备
Jan 08 Javascript
jCallout 轻松实现气泡提示功能
Sep 22 Javascript
Node.js中的事件驱动编程详解
Aug 16 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
Dec 14 Javascript
JavaScript运算符小结
Jun 03 Javascript
Bootstrap零基础学习第一课之模板
Jul 18 Javascript
完美实现js焦点轮播效果(一)
Mar 07 Javascript
javascript实现循环广告条效果
Dec 12 Javascript
原生JS实现简单的倒计时功能示例
Aug 30 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 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 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
phpcms手机内容页面添加上一篇和下一篇
2015/06/05 PHP
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
用JavaScript修改CSS属性的代码
2013/05/06 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
Vue.JS入门教程之列表渲染
2016/12/01 Javascript
JS实现直接运行html代码的方法
2017/03/13 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
vue-resourc发起异步请求的方法
2020/02/11 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
2020/09/16 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
pyramid配置session的方法教程
2013/11/27 Python
php使用递归与迭代实现快速排序示例
2014/01/23 Python
python基于http下载视频或音频
2018/06/20 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
Python如何测试stdout输出
2020/08/10 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
深入解析HTML5使用SVG图像时的viewBox属性用法
2015/09/02 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
新闻传媒系求职信范文
2014/04/19 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
2015年中秋节主持词
2015/07/30 职场文书
Oracle更换为MySQL遇到的问题及解决
2021/05/21 Oracle
java解析XML详解
2021/07/09 Java/Android