JS實(shí)現(xiàn)的排列組合算法示例
本文實(shí)例講述了JS實(shí)現(xiàn)的排列組合算法。分享給大家供大家參考,具體如下:
在數(shù)學(xué)中有排列組合,用來(lái)計(jì)算概率。
比如:從4個(gè)數(shù)字中,任意選擇兩個(gè)的情況。從5個(gè)數(shù)字中任意選擇3個(gè)數(shù)字的情況。(這里我們只考慮沒(méi)有順序的情況)。
公式:C(n,m)=n!/[m!(n-m)!]=n*(n-1)*...*(n-m+1)/[1*2*...*m],如C(5,2)=[5*4]/[1*2]=10.
舉例說(shuō)明:有 1,2,3,4 四個(gè)數(shù)字,從這四個(gè)數(shù)字中,任意選擇兩個(gè)數(shù)字一共有多少種情況:[1,2], [1,3], [1,4], [2,3], [2,4], [3,4]一共有這六種情況。
下面用代碼實(shí)現(xiàn)從5個(gè)數(shù)字中任意選擇3個(gè)的情況(不考慮順序)。
<script>
var array = [1, 2, 3, 4, 5];
for(var i = 0, len1 = array.length; i < len1; i++) {
var a2 = array.concat();
/*
排除之前已經(jīng)組合過(guò)的數(shù)據(jù)
比如:第一次的時(shí)候,i[0] = 1, 這個(gè)時(shí)候2層循環(huán), 只循環(huán) 2~5,
第二次的時(shí)候, i[1] = 2, 這個(gè)時(shí)候2層循環(huán), 只循環(huán) 3~5
同理:3層循環(huán)也是相比于2層循環(huán)來(lái)
*/
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>
運(yùn)行結(jié)果:

需要取幾個(gè)數(shù)字,就嵌套循環(huán)幾次。
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- 使用js Math.random()函數(shù)生成n到m間的隨機(jī)數(shù)字
- Javascript 生成指定范圍數(shù)值隨機(jī)數(shù)
- JS生成某個(gè)范圍的隨機(jī)數(shù)【四種情況詳解】
- javascript獲取不重復(fù)的隨機(jī)數(shù)的方法比較
- js生成隨機(jī)數(shù)之random函數(shù)隨機(jī)示例
- JavaScript 產(chǎn)生不重復(fù)的隨機(jī)數(shù)三種實(shí)現(xiàn)思路
- js獲取數(shù)組任意個(gè)不重復(fù)的隨機(jī)數(shù)組元素
- js實(shí)現(xiàn)簡(jiǎn)單排列組合的方法
- JS實(shí)現(xiàn)的全排列組合算法示例
- JS實(shí)現(xiàn)二維數(shù)組元素的排列組合運(yùn)算簡(jiǎn)單示例
- JavaScript隨機(jī)數(shù)的組合問(wèn)題案例分析
相關(guān)文章
cocos creator Touch事件應(yīng)用(觸控選擇多個(gè)子節(jié)點(diǎn)的實(shí)例)
下面小編就為大家?guī)?lái)一篇cocos creator Touch事件應(yīng)用(觸控選擇多個(gè)子節(jié)點(diǎn)的實(shí)例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就想給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09
javascript實(shí)現(xiàn)unicode與ASCII相互轉(zhuǎn)換的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)unicode與ASCII相互轉(zhuǎn)換的方法,涉及JavaScript字符串的遍歷、正則匹配及編碼轉(zhuǎn)換相關(guān)技巧,需要的朋友可以參考下2015-12-12
javascript實(shí)現(xiàn)的柱狀統(tǒng)計(jì)圖表
下面是完成后的預(yù)覽圖,可以看到,繪制一個(gè)表格,耗時(shí)0.005毫秒,也就是200分之一秒。效率我還是比較滿意的!2010-07-07
JavaScript遍歷數(shù)組和對(duì)象的元素簡(jiǎn)單操作示例
這篇文章主要介紹了JavaScript遍歷數(shù)組和對(duì)象的元素簡(jiǎn)單操作,結(jié)合實(shí)例形式分析了javascript數(shù)組與對(duì)象元素遍歷相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-07-07
javascript之Object.assign()的痛點(diǎn)分析
這篇文章主要介紹了javascript之Object.assign()的痛點(diǎn)分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
用原生js做個(gè)簡(jiǎn)單的滑動(dòng)效果的回到頂部
很多網(wǎng)頁(yè)在下方都會(huì)放置一個(gè)“返回頂部”按鈕,這樣可以幫助訪客重新找到導(dǎo)航或者重溫一遍廣告,于是將返回頂部功能做成了滑動(dòng)效果2014-10-10
JavaScript操作XML 使用百度RSS作為新聞源示例
JavaScript操作XML 使用百度RSS作為新聞源示例,需要的朋友可以參考下2012-02-02
javascript中刪除指定數(shù)組中指定的元素的代碼
已知一個(gè)數(shù)組,我們想用指定的方法對(duì)數(shù)組中的元素進(jìn)行逐一操作。需要的朋友可以參考下。2011-02-02
分享JavaScript與Java中MD5使用兩個(gè)例子
這篇文章主要為大家分享了JavaScript與Java中MD5使用兩個(gè)例子,2015-12-12

