JS實(shí)現(xiàn)的排列組合算法示例
本文實(shí)例講述了JS實(shí)現(xiàn)的排列組合算法。分享給大家供大家參考,具體如下:
在數(shù)學(xué)中有排列組合,用來計(jì)算概率。
比如:從4個數(shù)字中,任意選擇兩個的情況。從5個數(shù)字中任意選擇3個數(shù)字的情況。(這里我們只考慮沒有順序的情況)。
公式: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 四個數(shù)字,從這四個數(shù)字中,任意選擇兩個數(shù)字一共有多少種情況:[1,2], [1,3], [1,4], [2,3], [2,4], [3,4]一共有這六種情況。
下面用代碼實(shí)現(xiàn)從5個數(shù)字中任意選擇3個的情況(不考慮順序)。
<script> var array = [1, 2, 3, 4, 5]; for(var i = 0, len1 = array.length; i < len1; i++) { var a2 = array.concat(); /* 排除之前已經(jīng)組合過的數(shù)據(jù) 比如:第一次的時候,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>
運(yùn)行結(jié)果:
需要取幾個數(shù)字,就嵌套循環(huán)幾次。
感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運(yùn)行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運(yùn)行效果。
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
- 使用js Math.random()函數(shù)生成n到m間的隨機(jī)數(shù)字
- Javascript 生成指定范圍數(shù)值隨機(jī)數(shù)
- JS生成某個范圍的隨機(jī)數(shù)【四種情況詳解】
- javascript獲取不重復(fù)的隨機(jī)數(shù)的方法比較
- js生成隨機(jī)數(shù)之random函數(shù)隨機(jī)示例
- JavaScript 產(chǎn)生不重復(fù)的隨機(jī)數(shù)三種實(shí)現(xiàn)思路
- js獲取數(shù)組任意個不重復(fù)的隨機(jī)數(shù)組元素
- js實(shí)現(xiàn)簡單排列組合的方法
- JS實(shí)現(xiàn)的全排列組合算法示例
- JS實(shí)現(xiàn)二維數(shù)組元素的排列組合運(yùn)算簡單示例
- JavaScript隨機(jī)數(shù)的組合問題案例分析
相關(guān)文章
Javascript中產(chǎn)生固定結(jié)果的函數(shù)優(yōu)化技巧
分享一個Javascript編寫函數(shù)的優(yōu)化技巧;適用的函數(shù)應(yīng)該要滿足以下條件;產(chǎn)生固定結(jié)果;復(fù)雜或較耗時等等,感興趣的朋友可以了解下2013-01-01javascript制作sql轉(zhuǎn)換為stringBuffer的小工具
這篇文章主要介紹了javascript制作sql轉(zhuǎn)換為stringBuffer的小工具,使用方法很簡單,吧寫好的sql語句只要格式化好之后放進(jìn)去就可以了,推薦給大家,有需要的小伙伴可以參考下。2015-04-04JavaScript將坐標(biāo)字符串轉(zhuǎn)為數(shù)組的項(xiàng)目實(shí)踐
本文主要介紹了JavaScript將坐標(biāo)字符串轉(zhuǎn)為數(shù)組的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01JavaScript中的console.assert()函數(shù)介紹
這篇文章主要介紹了JavaScript中的console.assert()函數(shù)介紹,assert()函數(shù)是一個調(diào)試中經(jīng)常使用的斷言工具函數(shù),需要的朋友可以參考下2014-12-12JavaScript實(shí)現(xiàn)QQ列表展開收縮擴(kuò)展功能
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)QQ列表展開收縮擴(kuò)展功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10JavaScript實(shí)現(xiàn)MIPS乘法模擬的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)MIPS乘法模擬的方法,實(shí)例分析了JavaScript實(shí)現(xiàn)MIPS乘法模擬的運(yùn)算技巧,需要的朋友可以參考下2015-04-04