hanyeah 专注于AS

全排列-递归法

如果已知n-1个元素的排列,将n插入到排列的不同位置,就得到了n个元素的排列。

代码如下:

var n = 5;
var result = [];
quanpailie([], n);
console.log(result);
function quanpailie(a, n){
	if(n === 0){
		result.push(a.join());
	} else {
		for(var i = 0; i <= a.length; i++){
			quanpailie(insert(a, i, n),n-1);
		}
	}
}

function insert(a, ind, num) {
	a = a.concat();
	for(var i = a.length; i > ind; i--) {
		a[i] = a[i - 1];
	}
	a[ind] = num;
	return a;
}


2019年3月22日 | 发布:hanyeah | 分类:算法 | 评论:0

发表留言: