この記事では、PHP で一般的に使用されるアルゴリズムと時間計算量を詳しく紹介します。必要な方は参考にしてください。一般的な時間計算量は次のとおりです: 定数次数 O(1)、対数次数 O (log2n) 、線形次数 O(n)、線形対数次数 O(nlog2n)、二乗次数 O(n2)、三次次数 O(n3)
代码如下:
//二分查找O(log2n) function erfen($a,$l,$h,$f){ if($l >$h){ return false;} $m = intval(($l+$h)/2); if ($a[$m] == $f){ return $m; }elseif ($f < $a[$m]){ return erfen($a, $l, $m-1, $f); }else{ return erfen($a, $m+1, $h, $f); } } $a = array(1,12,23,67,88,100); var_dump(erfen($a,0,5,1)); //遍历树O(log2n) function bianli($p){ $a = array(); foreach (glob($p.'/*') as $f){ if(is_dir($f)){ $a = array_merge($a,bianli($f)); }else{ $a[] = $f; } } return $a; } //阶乘O(log2n) function jc($n){ if($n<=1){ return 1; }else{ return $n*jc($n-1); } } //快速查找 O(n *log2(n)) function kuaisu($a){ $c = count($a); if($c <= 1){return $a;} $l = $r = array(); for ($i=1;$i<$c;$i++){ if($a[$i] < $a[0]){ $l[] = $a[$i]; }else{ $r[] = $a[$i]; } } $l = kuaisu($l); $r = kuaisu($r); return array_merge($l,array($a[0]),$r); } //插入排序 O(N*N) function charu($a){ $c = count($a); for($i=1;$i<$c;$i++){ $t = $a[$i]; for($j=$i;$j>0 && $a[$j-1]>$t;$j--){ $a[$j] = $a[$j-1]; } $a[$j] = $t; } return $a; } //选择排序O(N*N) function xuanze($a){ $c = count($a); for($i=0;$i<$c;$i++){ for ($j=$i+1;$j<$c;$j++){ if($a[$i]>$a[$j]){ $t = $a[$j]; $a[$j] = $a[$i]; $a[$i] = $t; } } } return $a; } //冒泡排序 O(N*N) function maopao($a){ $c = count($a); for($i=0;$i<$c;$i++){ for ($j=$c-1;$j>$i;$j--){ if($a[$j] < $a[$j-1]){ $t = $a[$j-1]; $a[$j-1] = $a[$j]; $a[$j] = $t; } } } return $a; } 代码如下: /** * 排列组合 * 采用二进制方法进行组合的选择,如表示5选3时,只需有3位为1就可以了,所以可得到的组合是 01101 11100 00111 10011 01110等10种组合 * * @param 需要排列的数组 $arr * @param 最小个数 $min_size * @return 满足条件的新数组组合 */ function plzh($arr,$size=5) { $len = count($arr); $max = pow(2,$len); $min = pow(2,$size)-1; $r_arr = array(); for ($i=$min; $i<$max; $i++){ $count = 0; $t_arr = array(); for ($j=0; $j<$len; $j++){ $a = pow(2, $j); $t = $i&$a; if($t == $a){ $t_arr[] = $arr[$j]; $count++; } } if($count == $size){ $r_arr[] = $t_arr; } } return $r_arr; } $pl = pl(array(1,2,3,4,5,6,7),5); var_dump($pl);
関連推奨事項:
PHP の一般的なアルゴリズムとデータ構造の例スマートPHP で配列を使用してプログラム時間の複雑さを軽減以上がPHP の一般的なアルゴリズムと時間計算量の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。