方法一:
1、假设初始时只有一个字母a,则它的全排列就是a
2、再a的基础上在来一个字母b,则可以将b放在a的前面或后面,这样就有两种排序(a,b)或(b,a)
3、再2的基础上再来一个字母c则c可以放在(a,b)的前中后三个位置(即分别与a,b,c进行交换)形成三个排列(c,b,a)(a,c,b)(a,b,c),也可以放在(b,a)的三个 位置形成三个排列(c,b,a)(b,c,a)(b,a,c)。至此所有字母都已排列完毕。
总结:此处采用的插入排序+递归的思想
//function swap(&a,&b){
// t= a;
// a= b;
// b= t;
//}
function pailiezuhe( arr, begin){
if($begin==0) {
print_r($arr);
echo "</br>";
}
if($begin >= count($arr)) return ;
pailiezuhe($arr,$begin+1);
for($i = $begin-1;$i>=0;$i--){
$t = $arr[$begin];
$arr[$begin] = $arr[$i];
$arr[$i] = $t;
print_r($arr);
echo "</br>";
pailiezuhe($arr,$begin +1);
$t = $arr[$begin];
$arr[$begin] = $arr[$i];
$arr[$i] = $t;
}
}
“`