熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

php 常用算法和時間復雜度

2013-11-15 12:36:39  來源: PHP編程 
本篇文章是對php中的常用算法以及時間復雜度進行了詳細的分析介紹需要的朋友參考下  

  按數量級遞增排列常見的時間復雜度有常數階O()對數階O(logn)線性階O(n)線性對數階O(nlogn)平方階O(n)立方階O(n)

復制代碼 代碼如下:
//二分查找O(logn)
function erfen($a$l$h$f){
if($l >$h){ return false;}
$m = intval(($l+$h)/);
if ($a[$m] == $f){
return $m;
}elseif ($f < $a[$m]){
return erfen($a $l $m $f);
}else{
return erfen($a $m+ $h $f);
}

}
$a = array();
var_dump(erfen($a));
//遍歷樹O(logn)
function bianli($p){
$a = array();
foreach (glob($p/*) as $f){
if(is_dir($f)){
$a = array_merge($abianli($f));
}else{
$a[] = $f;
}
}
return $a;
}
//階乘O(logn)
function jc($n){
if($n<=){
return ;
}else{
return $n*jc($n);
}
}
//快速查找 O(n *log(n))
function kuaisu($a){
$c = count($a);
if($c <= ){return $a;}
$l = $r = array();
for ($i=;$i<$c;$i++){
if($a[$i] < $a[]){
$l[] = $a[$i];
}else{
$r[] = $a[$i];
}
}
$l = kuaisu($l);
$r = kuaisu($r);
return array_merge($larray($a[])$r);
}
//插入排序 O(N*N)
function charu($a){
$c = count($a);
for($i=;$i<$c;$i++){
$t = $a[$i];
for($j=$i;$j> && $a[$j]>$t;$j){
$a[$j] = $a[$j];
}
$a[$j] = $t;
}
return $a;
}
//選擇排序O(N*N)
function xuanze($a){
$c = count($a);
for($i=;$i<$c;$i++){
for ($j=$i+;$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=;$i<$c;$i++){
for ($j=$c;$j>$i;$j){
if($a[$j] < $a[$j]){
$t = $a[$j];
$a[$j] = $a[$j];
$a[$j] = $t;
}
}
}
return $a;
} 復制代碼 代碼如下:

  
/**
* 排列組合
* 采用二進制方法進行組合的選擇如表示只需有位為就可以了所以可得到的組合是 種組合
*
* @param 需要排列的數組 $arr
* @param 最小個數 $min_size
* @return 滿足條件的新數組組合
*/
function plzh($arr$size=) {
$len = count($arr);
$max = pow($len);
$min = pow($size);
$r_arr = array();
for ($i=$min; $i<$max; $i++){
$count = ;
$t_arr = array();
for ($j=; $j<$len; $j++){
$a = pow( $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());
var_dump($pl);


From:http://tw.wingwit.com/Article/program/PHP/201311/21271.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.