输入:正整数n
输出:数1...n的所有的可能排列
步骤:
1当i取定为1的时候,余下序列为2 ..n,我们发现1和序列2 ..n的全排列的组合 {1,2 ..n全排列}。就构成了以1开头的序列的全排列。子问题就是求2 ..n序列的全排列了。可以发现此时子问题的规模减小了1。那么用递归就很直观了。
2然后我们把i取定为2的时候。那么问题的求解就编程了{2,1.3...n全排列}
3.如此类推,直到所有i从1到n的可能的取值下的子问题都解决了,就能得到全排列了。而且序列的初始序列并不影响全排列的过程。
时间复杂度分析
n个数(字符、对象)的全排列一共有n!种,所以全排列算法至少时间O(n!)的。如果要对全排列进行输出,那么输出的时间要O(n*n!),因为每一个排列都有n个数据。