从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。
递归
这是一个原地排列,递归过程如下:
假设排列{1,2,3},先选定第一个位置的元素,有三种可能,用exchange方法交换元素位置来选择一个元素(三种可能的其中一个),选定第一个元素后递归调用该方法来选定第二个元素,然后递归来选择第三个元素。至此我们得到了一个结果,我们需要将list还原,来继续遍历其他可能性。
最右边圈住的过程就是一个完整递归的过程。
java实现:
1 | package algos; |