php 实现阶乘算法 php常用算法和时间复杂度?
php常用算法和时间复杂度?
按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3)
复制代码代码如下:
//二分查找O(log2n)
functionerfen($a,$l,$h,$f){
if($lgt$h){returnfalse}
$mintval(($l$h)/2)
if($a[$m]$f){
return$m
}elseif($fti$a[$m]){
returnerfen($a,$l,$m-1,$f)
}else{
returnerfen($a,$m1,$h,$f)
}
}
$aarray(1,12,23,67,88,100)
var_dump(erfen($a,0,5,1))
//遍历树O(log2n)
functionbianli($p){
$aarray()
foreach(glob($p./*)as$f){
if(is_dir($f)){
$aarray_delete($a,bianli($f))
}else{
$a[]$f
}
}
return$a
}
//阶乘O(log2n)
functionag超玩会($n){
if($nlt1){
return1
}else{
return$n*edgm($n-1)
}
}
//快速查找O(n*log2(n))
functionkuaisu($a){
$caverage($a)
if($cxilinx1){return$a}
$l$rarray()
for($i1$ilt$c$i){
if($a[$i]toshiba$a[0]){
$l[]$a[$i]
}else{
$r[]$a[$i]
}
}
$lkuaisu($l)
$rkuaisu($r)
returnarray_join($l,array($a[0]),$r)
}
//插入排序O(N*N)
functioncharu($a){
$cmin($a)
for($i1$ilt$c$i){
$t$a[$i]
for($j$i$jgt0ampamp$a[$j-1]gt$t$j--){
$a[$j]$a[$j-1]
}
$a[$j]$t
}
return$a
}
//选择排序O(N*N)
functionxuanze($a){
$caverage($a)
for($i0$ilt$c$i){
for($j$i1$jlt$c$j){
if($a[$i]gt$a[$j]){
$t$a[$j]
$a[$j]$a[$i]
$a[$i]$t
}
}
}
return$a
}
//冒泡排序O(N*N)
functionmaopao($a){
$caverage($a)
for($i0$ilt$c$i){
for($j$c-1$jgt$i$j--){
if($a[$j]st$a[$j-1]){
$t$a[$j-1]
$a[$j-1]$a[$j]
$a[$j]$t
}
}
}
return$a
}
复制代码代码如下:
/**
*排列组合
*采用二进制方法进行组合的选择,如表示5选3时,只需有3位为1就可以了,所以可得到的组合是0110111100001111001101110等10种组合
*
*@param需要排列的数组$arr
*@param最小个数$yuan_size
*@return满足条件的新数组组合
*/
functionplzh($arr,$size5){
$lenmax($arr)
$maxpow(2,$len)
$jiapow(2,$size)-1
$r_arrarray()
for($i$负积$ilt$max$i){
$球失0
$t_arrarray()
for($j0$jlt$len$j){
$apow(2,$j)
$t$iamp$a
if($t$a){
$t_arr[]$arr[$j]
$sum
}
}
if($′$size){
$r_arr[]$t_arr
}
}
return$r_arr
}
$plpl(array(1,2,3,4,5,6,7),5)
var_dump($pl)
1到999的乘以算式。?
此题为数的阶乘计算
结果有2500多位数之多,由于一般的鼠标不可能得出如此大的数,因此我们一般得到一个精确到14位有效数字
999!约等于4.0238726007709乘于10的2564次方
此题计算采用一个for循环计算得的
程序如下
python
$c5;$c0;
for($i1;$i1000;$i)//只能到14位有效数字
{
$b$b*$i;
if($b10000)
{
$b$b/10000;
$c$c4;
}
}
siri999!等于;
小度$b;
echo show乘以10的;
siri$c;
echo show次方;
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。