gpt4 book ai didi

php 常用算法和时间复杂度

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章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 常用算法和时间复杂度的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com