1. 简单插入法
简单插入法原理比较简单,但是当队列中有重复元素时,简单插入法则无法输出正确结果(除非是对结果进行重复排列过滤)。其原理如下:
假设元素列表为{ A 1 {A_1} A1, A 2 {A_2} A2, A 3 {A_3} A3,…, A n {A_n} An},首先取出 A 1 {A_1} A1,当前排列结果 P e r m Perm Perm为空则直接插入 A 1 {A_1} A1,此时全排列结果记为 P e r m 1 {Perm_1} Perm1;其次取出元素 A 2 {A_2} A2, A 3 {A_3} A3,…, A n {A_n} An 并完成下面运算:
当第 i + 1 i+1 i+1次取出元素为 A i + 1 {A_{i+1}} Ai+1时, P e r m i {Perm_i} Permi中的一个排列结果已经插入了 i i i项元素,记其中一个排列为{
B 1 {B_1} B1, B 2 {B_2} B2, B 3 {B_3} B3,…, B i {B_i} Bi},对{
B 1 {B_1} B1, B 2 {B_2} B2, B 3 {B_3} B3,…, B i {B_i} Bi}的 i i i个元素形成的 i + 1 i+1 i+1个空位,每个空位插入元素 A i + 1 {A_{i+1}} Ai+1可以形成 i + 1 i+1 i+1个新排列即:
{ A i + 1 , B 1 , B 2 , B 3 , . . . , B i −