![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
php(算法)
玲曦
这个作者很懒,什么都没留下…
展开
-
查找算法之插值查找
插值查找相对于重复二分查找,则进行了复杂的四则运算,是二分查找法的优化。 <?php /** * 插值查找 * * @param string $find 要查找的值 * @param array $array 要查找的数组 * @return bool|string */ function interpolationSearch ($find, array $array) ...原创 2019-10-29 10:24:33 · 201 阅读 · 0 评论 -
查找算法之重复二分查找
重复二分查找,主要是在对已经排好序,且存在重复元素的数组中,获取要查找的元素第一次出现的位置,或者最后一次出现的位置,这种需求来使用。 <?php /** * 重复二分查找 * * @param string $find 要查找的值 * @param array $array 要查找的数组 * @return bool|string */ function repeatBin...原创 2019-10-29 10:23:42 · 295 阅读 · 0 评论 -
查找算法之二分查找
<?php /** * 二分查找 * * @param string $find 要查找的值 * @param array $array 要查找的数组 * @return bool|string */ function binarySearch ($find, array $array) { // 数组开始下标 $left = 0; // 获取数组...原创 2019-10-28 09:04:51 · 81 阅读 · 0 评论 -
查找算法之线性查找
<?php /** * 线性查找 * * @param string $find 要查找的值 * @param array $array 要查找的数组 * @return bool|string */ function linearSearch ($find, array $array) { foreach ($array as $key => $value) ...原创 2019-10-28 09:04:11 · 140 阅读 · 0 评论 -
完整菱形
<?php for($i=0;$i<=3;$i++){ for($j=0;$j<=3-$i;$j++){ echo ' '; } for($k=0;$k<=2*$i;$k++){ echo '*'; } echo '<br/>'; } for($i=2;$i>=0;$i--){ for(...原创 2019-10-28 09:02:40 · 188 阅读 · 0 评论 -
牛年求牛:有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛
牛年求牛:有一母牛,到4岁可生育,每年一头,所生均是一样的母牛,到15岁绝育,不再能生,20岁死亡,问n年后有多少头牛? // 方法1:按照时间推移计算, 嵌套循环 function countcows($years) { $cows[] = 0; if($years < 4) return 1; for($i=4; $i <= $years; $i++) { ...原创 2019-10-28 09:00:06 · 397 阅读 · 0 评论 -
合并多个数组,不用array_merge(),题目来于论坛。
思路:遍历每个数组,重新组成一个新数组。 <?php function t(){ $c = func_num_args()-1; $a = func_get_args(); //print_r($a); for($i=0; $i<=$c; $i++){ if(is_array($a[$i])){ for($j=0;...原创 2019-10-28 08:55:28 · 900 阅读 · 0 评论 -
对一组数进行排序(快速排序算法)。
思路:通过一趟排序分成两部分,然后递归对这两部分排序,最后合并。 <?php function q($array) { if (count($array) <= 1) {return $array;} //以$key为界,分成两个子数组 $key = $array[0]; $l = array(); $r = array(); //分别进行递归排序,然后...原创 2019-10-28 08:51:01 · 2483 阅读 · 0 评论 -
在一组数中,要求插入一个数,按其原来顺序插入,维护原来排序方式。
思路:找到比要插入数大的那个位置,替换,然后把后面的数后移一位。 <?php $in = 2; $arr = array(1,1,1,3,5,7); $n = count($arr); //如果要插入的数已经最大,直接打印 if($arr[$n-1] < $in) { $arr[$n+1] = $in; print_r($arr); } for($i=0; $i<...原创 2019-10-28 08:49:12 · 647 阅读 · 1 评论 -
杨辉三角
思路:每一行的第一位和最后一位是1,没有变化,中间是前排一位与左边一排的和,这种算法是用一个二维数组保存,另外有种算法用一维数组也可以实现,一行一行的输出,有兴趣去写着玩下。 <?php //每行的第一个和最后一个都为1,写了6行 for($i=0; $i<6; $i++) { $a[$i][0]=1; $a[$i][$i]=1; } //出除了第一位和最后一位...原创 2019-10-28 08:48:26 · 131 阅读 · 0 评论 -
冒泡排序
C里基础算法,从小到大对一组数排序。 思路:这题从小到大,第一轮排最小,第二轮排第二小,第三轮排第三小,依次类推…… <?php $arr = array(3, 2, 1); $n = count($arr); //每循环一次,就跑一趟后面的排序 for($j=0; $j<$n-1; $j++) { //对后面没排好的,循环查找出最大(最小)的,进行一趟排序 for($i=$...原创 2019-10-28 08:46:40 · 69 阅读 · 0 评论 -
画个菱形
<?php for($i=0;$i<=3;$i++){ for($j=0;$j<=3-$i;$j++){ echo ' '; } for($k=0;$k<=2*$i;$k++){ echo '*'; } echo '<br/>'; }原创 2019-10-28 08:45:17 · 195 阅读 · 0 评论