您好,登錄后才能下訂單哦!
本文實(shí)例講述了JS實(shí)現(xiàn)的全排列組合算法。分享給大家供大家參考,具體如下:
全排列組合算法,例如a,b,c,d進(jìn)行全排列組合,則組合結(jié)果為:a,b,ab,c,ac,bc,abc,d,ad,bd,abd,cd,acd,bcd,abcd。實(shí)現(xiàn)思路:從數(shù)據(jù)源拿出一個(gè)元素,依次與已存在的組合數(shù)據(jù)進(jìn)行組合,循環(huán)上面操作直到數(shù)據(jù)源沒有數(shù)據(jù)為止。
例子:
數(shù)據(jù)源a,b,c
1.拿出a,組合數(shù)據(jù)group為空,插入數(shù)據(jù)源a元素到組合數(shù)據(jù)group,此時(shí)group=[a]
2.拿出b,組合數(shù)據(jù)group拿出a,a和b組合,得到ab,把數(shù)據(jù)源b元素、ab插入組合數(shù)據(jù)group,此時(shí)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,此時(shí)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));
運(yùn)行輸出結(jié)果:
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript排序算法總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計(jì)有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。