一般的な時間計算量を大きさの昇順に並べると、定数次数 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 = 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; {
if($n<=1){
return 1;
}else{
return $n*jc($n-1);
}
}
//クイック検索 O(n *log2(n))
function kuaisu($a){
$c = count($a);
if ($c $l = $r = array();
for ($i =1;$i 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 $ t = $a[$i];
for($j=$i;$j>0 && $a[$j-1]>$t;$j--){
$ a[$j] = $a[$j-1]; xuanze($a){
$c = count($a);
for($i=0;$i for ($j=$ i+1;$j $a[$i] = $t;
$c = count( $a);
for($i=0;$i for ($j=$c-1;$j>$i;$j--){
if($a [$j] < $a[$j-1]){
$ j] = $ t;
/**
* 順列と組み合わせ
* 組み合わせを選択するにはバイナリ方式を使用します。たとえば、5 つのビットから 3 つを選択する場合、1 になるビットは 3 つだけなので、使用できる組み合わせは 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 $count = 0;
$t_arr = array();
for ($j=0; $j $a = pow(2, $j);
$t = $i&$a;
if($t == $a){
$ t_arr [] = $ arr [$ j];
$ t_arr [] r_arr; var_dump($pl);
http://www.bkjia.com/PHPjc/327958.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/327958.html
技術記事
一般的な時間計算量を大きさの昇順に並べると、定数次数 O(1)、対数次数 O(log2n)、線形次数 O(n)、線形対数次数 O(nlog2n)、二乗次数 O(n2)、三次次数となります。 O(n3) コードをコピーします コードは次のとおりです...