JS實現的排列組合算法示例
本文實例講述了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層循環(huán), 只循環(huán) 2~5,
第二次的時候, i[1] = 2, 這個時候2層循環(huán), 只循環(huán) 3~5
同理:3層循環(huán)也是相比于2層循環(huán)來
*/
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>
運行結果:

需要取幾個數字,就嵌套循環(huán)幾次。
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。
更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數據結構與算法技巧總結》、《JavaScript數組操作技巧總結》、《JavaScript數學運算用法總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結》
希望本文所述對大家JavaScript程序設計有所幫助。
相關文章
javascript制作sql轉換為stringBuffer的小工具
這篇文章主要介紹了javascript制作sql轉換為stringBuffer的小工具,使用方法很簡單,吧寫好的sql語句只要格式化好之后放進去就可以了,推薦給大家,有需要的小伙伴可以參考下。2015-04-04
JavaScript中的console.assert()函數介紹
這篇文章主要介紹了JavaScript中的console.assert()函數介紹,assert()函數是一個調試中經常使用的斷言工具函數,需要的朋友可以參考下2014-12-12

