我不知道这是否会有所帮助,但我已经制作了一个脚本,它按字典顺序生成 10 个数字(0 -> 9)的排列,它运行时间约为 60 秒 [Quadcore 2.7Ghz] 并使用 512MB,原因是数组大小...
通过数学计算:10!= 60 秒内 3628800 次排列,8!= 40320 个排列,所以它应该运行在 (60 * 40320) / 3628800 = 0.67 秒,比如 1 秒!您可能需要更改 8 位数排列的代码!PS:我不知道浏览器是否会处理+3M数字的输出!
<?php
/* 0 - > 9 PERMUTATION SCRIPT */
ini_set('memory_limit', '512M');
ini_set('max_execution_time', '0');
$st = timer();
$permutations = array();
for($a=0;$a<=9;$a++){
for($b=0;$b<=9;$b++){
if($b != $a){
for($c=0;$c<=9;$c++){
if($c != $a && $c != $b){
for($d=0;$d<=9;$d++){
if($d != $a && $d != $b && $d != $c){
for($e=0;$e<=9;$e++){
if($e != $a && $e != $b && $e != $c && $e != $d){
for($f=0;$f<=9;$f++){
if($f != $a && $f != $b && $f != $c && $f != $d && $f != $e){
for($g=0;$g<=9;$g++){
if($g != $a && $g != $b && $g != $c && $g != $d && $g != $e && $g != $f){
for($h=0;$h<=9;$h++){
if($h != $a && $h != $b && $h != $c && $h != $d && $h != $e && $h != $f && $h != $g){
for($i=0;$i<=9;$i++){
if($i != $a && $i != $b && $i != $c && $i != $d && $i != $e && $i != $f && $i != $g && $i != $h){
for($j=0;$j<=9;$j++){
if($j != $a && $j != $b && $j != $c && $j != $d && $j != $e && $j != $f && $j != $g && $j != $h && $j != $i){
$permutations[] = $a.$b.$c.$d.$e.$f.$g.$h.$i.$j;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
echo count($permutations);
$et = timer();
$time = $et - $st;
echo "<br/>in : ".$time." seconds.";
function timer(){
list($usec, $sec) = explode(" ", microtime());
return((float)$usec + (float)$sec);
}
?>
编辑:1->8 置换脚本:~0.43 秒。
<?php
$permutations = array();
for($a=1;$a<=8;$a++){
for($b=1;$b<=8;$b++){
if($b != $a){
for($c=1;$c<=8;$c++){
if($c != $a && $c != $b){
for($d=1;$d<=8;$d++){
if($d != $a && $d != $b && $d != $c){
for($e=1;$e<=8;$e++){
if($e != $a && $e != $b && $e != $c && $e != $d){
for($f=1;$f<=8;$f++){
if($f != $a && $f != $b && $f != $c && $f != $d && $f != $e){
for($g=1;$g<=8;$g++){
if($g != $a && $g != $b && $g != $c && $g != $d && $g != $e && $g != $f){
for($h=1;$h<=8;$h++){
if($h != $a && $h != $b && $h != $c && $h != $d && $h != $e && $h != $f && $h != $g){
$permutations[] = $a.$b.$c.$d.$e.$f.$g.$h;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
echo count($permutations);
?>