JS實現(xiàn)的全排列組合算法示例
本文實例講述了JS實現(xiàn)的全排列組合算法。分享給大家供大家參考,具體如下:
全排列組合算法,例如a,b,c,d進行全排列組合,則組合結(jié)果為:a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd。實現(xiàn)思路:從數(shù)據(jù)源拿出一個元素,依次與已存在的組合數(shù)據(jù)進行組合,循環(huán)上面操作直到數(shù)據(jù)源沒有數(shù)據(jù)為止。
例子:
數(shù)據(jù)源a,b,c
1.拿出a,組合數(shù)據(jù)group為空,插入數(shù)據(jù)源a元素到組合數(shù)據(jù)group,此時group=[a]
2.拿出b,組合數(shù)據(jù)group拿出a,a和b組合,得到ab,把數(shù)據(jù)源b元素、ab插入組合數(shù)據(jù)group,此時group=[a,b,ab]
3.拿出c,組合數(shù)據(jù)group拿出a、b、ab,分別與c組合,分別得到ac、bc、abc,把數(shù)據(jù)源c元素、ac、bc、abc插入組合數(shù)據(jù)group,此時group=[a,b,ab,c,ac,bc,abc]
js代碼:
var data = ['a','b','c','d'];
function getGroup(data, index = 0, group = []) {
var need_apply = new Array();
need_apply.push(data[index]);
for(var i = 0; i < group.length; i++) {
need_apply.push(group[i] + data[index]);
}
group.push.apply(group, need_apply);
if(index + 1 >= data.length) return group;
else return getGroup(data, index + 1, group);
}
console.log(getGroup(data));
運行輸出結(jié)果:

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
- 使用js Math.random()函數(shù)生成n到m間的隨機數(shù)字
- Javascript 生成指定范圍數(shù)值隨機數(shù)
- JS生成某個范圍的隨機數(shù)【四種情況詳解】
- javascript獲取不重復(fù)的隨機數(shù)的方法比較
- js生成隨機數(shù)之random函數(shù)隨機示例
- JavaScript 產(chǎn)生不重復(fù)的隨機數(shù)三種實現(xiàn)思路
- js獲取數(shù)組任意個不重復(fù)的隨機數(shù)組元素
- js實現(xiàn)簡單排列組合的方法
- JS實現(xiàn)的排列組合算法示例
- JS實現(xiàn)二維數(shù)組元素的排列組合運算簡單示例
- JavaScript隨機數(shù)的組合問題案例分析
相關(guān)文章
使用 JavaScript 創(chuàng)建可維護的幻燈片效果代碼
顯然,效果很實用。對于這個效果,我們并不解釋如何去使用效果庫,而是講解如何創(chuàng)建類似的效果,并保持他的可用性,分離式(unobtrusive),可維護性(讓未來的維護者,在不需要修改你的腳本的情況下,修改圖片,外觀或文本標(biāo)簽)。2008-06-06
使用JS和canvas實現(xiàn)gif動圖的停止和播放代碼
這篇文章主要介紹了使用JS和canvas實現(xiàn)gif動圖的停止和播放代碼,非常具有實用價值,需要的朋友可以參考下2017-09-09
webpack自動引入打包資源HtmlWebpackPlugin的實現(xiàn)
本文主要介紹了webpack自動引入打包資源HtmlWebpackPlugin的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
純JavaScript創(chuàng)建一個簡單的待辦事項列表
這篇文章主要給大家介紹了關(guān)于純JavaScript創(chuàng)建一個簡單的待辦事項列表的相關(guān)資料,清單通常用于記錄我們在某一天需要完成的所有事項,將最關(guān)鍵的任務(wù)放在最上方,將最不重要的事項放在最下方,需要的朋友可以參考下2024-01-01

