PHP常用算法

来源:互联网 发布:大学毕业生 知乎 编辑:程序博客网 时间:2024/06/07 05:39

冒泡排序法

$arr = array(1,3,5,32,756,2,6);$len = count($arr);$temp = "";for($i=0; $i<$len; $i++){for($j=1; $j<$len-$i; $j++){if($arr[$j-1] > $arr[$j]){$temp = $arr[$j];$arr[$j] = $arr[$j-1];$arr[$j-1] = $temp;}}}

快速排序法
function Qsort($arr){$len = count($arr);if($len<=1){return $arr;}$key = $arr[0];for($i=0; $i<$len; $i++){if($arr[$i] <= $key){$left[] = $arr[$i];}else{$right[] = $arr[$i];}}$left[] = Qsort($left);$right[] = Qsort($right);return array_merge($left,array($key),$right);}


插入排序法

$temp = "";$len = count($arr);for($i=1; $i<$len; $i++){$temp = $arr[$i];$j = $i-1;while($arr[$j]>$temp && $j>=0){$arr[$j+1] = $arr[$j];$arr[$j] = $temp;$j--;}}

 


选择排序法

$arr = array(1,3,5,32,756,2,6);$len = count($arr);$min = "";$temp = "";for($i=0; $i<$len-1; $i++){$min = $i;for($j=$i+1; $j<$len; $j++){if($arr[$min] > $arr[$j]){$min = $i;}}if($min!=$i){$temp = $arr[$min];$arr[$min] = $arr[$i];$arr[$i] = $temp;}}


二分查找法

function Pfind($arr, $low, $high, $key){if($low > $high){return -1;}$mid = intval(($low+$high)/2);if($arr[$mid] == $key){return $mid;}elseif($arr[mid] < $key){return Pfind($arr, $mid+1, $high, $key);}else{return Pfind($arr, $low, $mid-1, $key);}}


杨辉三角

1
1   1
1   2   1
1   3   3   1
1   4   6   4   1
1   5  10  10   5   1

 

$arr = array();for($i=0; $i<6; $i++){$arr[$i][0] = 1;$arr[$i][$i] = 1;}for($i=2; $i<6; $i++){for($j=1; $j<$i; $j++){$arr[$i][$j] = $arr[$i-1][$j-1]+$arr[$i-1][$j];}}for($i=0; $i<6; $i++){for($j=0; $j<=$i; $j++){echo $arr[$i][$j]." ";}echo "<br/>";}


将一个数插入排序好数组

$in = 2;$arr = array(1,3,5,32,756,2,6);$len = count($arr);if($in > $arr[$len-1]){$arr[$len] = $in;}for($i=0; $i<$len; $i++){if($arr[$i] >= $in){$temp = $arr[$i];$arr[$i] = $in;for($j=$i+1; $j<$len+1; $j++){$temp2 = $arr[$j];$arr[$j] = $temp;$temp = $temp2;}}}

 

牛年求牛:有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛

function Bcow($n){static $num = 1;for($i=1; $i<=$n; $i++){if($i>4 && $i<15 ){ $num++; Bcow($n-$i); }if($i>=20){ $num--; }}return $num;}


 

0 0
原创粉丝点击