资讯专栏INFORMATION COLUMN

php算法实现(一)

xcc3641 / 2658人阅读

摘要:记录所有算法相关知识。写算法时,可以先写,这样比较容易把握和思考。以下算法都可以直接跑。冒泡算法这种形式比较简便易读快速排序。

记录所有算法相关知识。写算法时,可以先写test case,这样比较容易把握和思考。
以下算法都可以直接跑。
1.冒泡算法

     $arr[$j]) {
                    //这种形式比较简便易读
                    list($arr[$i], $arr[$j]) = array($arr[$j], $arr[$i]);
                }
            }
        }
        return $arr;
    }

2.快速排序。简单思路,随机挑选一个数组中的值,以它为标准,小于他的放在她的左边,大于他的放在他的右边。之后递归,最后所有的值都会排列好。


3.从两个数组中找出相同的数

 $arr2[$index2]) {
            $index2++;
        } else {
            $container[] = $arr1[$index1];
            //放入container之后,不要忘记增加index
            $index1++;
            $index2++;
        }
    }
    return array_unique($container);
}

4.重写shuffle函数,打乱一个数组


5.分离字母和数字。一个string中有字母数字,分离并用:分割


6.约瑟夫环问题
相关题目:一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。

 1) {
        for ($i=0;$i<$n-1;$i++) {
            $pop = array_shift($roundTable);
            array_push($roundTable, $pop);
        }
        array_shift($roundTable);
    }
    return $roundTable[0];
}

7.二分法

 $index) {
            $right = $mid - 1;
        } else if ($arr[$mid] < $index) {
            $left = $mid + 1;
        } else {
            return $mid;
        }
    }
    return -1;
}

8.找出一组数中连续的最大和

= 0) {
            if ($maxSum < $currentSum) 
                $maxSum = $currentSum;
            $currentSum += $arr[$i];
        } else {
            $currentSum = $arr[$i];
        }
    }
    return $maxSum;
}

9.3sum. 排序好的数列,复杂度n^2。如果没有排列好,可以先用sort

left,所以不用担心i,left,right相等
        while ($right > $left) {
            $sum = $arr[$left] + $arr[$i] + $arr[$right];
            if ($sum < 0) {
                $left++;
            } else if ($sum > 0) {
                $right--;
            } else {
                $set = array($arr[$left], $arr[$i], $arr[$right]);
                $result[] = $set;
                //不要忘记++,否则死循环
                $left++;
                $right--;
            }
        }
    }
    return $result;
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28525.html

相关文章

  • PHP 的方式实现的各类算法合集

    摘要:数据项是数据的不可分割的最小单位。数据项是对客观事物某一方面特性的数据描述。数据对象是性质相同的数据元素的集合,是数据的一个子集。数据的逻辑结构数据元素之间的相互关系称为逻辑结构。 项目地址 https://github.com/m9rco/algo... 每周最少一更,求出题,求虐待 At least once a week, ask for problems and abuse 简...

    Karrdy 评论0 收藏0
  • PHP 的方式实现的各类算法合集

    摘要:数据项是数据的不可分割的最小单位。数据项是对客观事物某一方面特性的数据描述。数据对象是性质相同的数据元素的集合,是数据的一个子集。数据的逻辑结构数据元素之间的相互关系称为逻辑结构。 项目地址 https://github.com/m9rco/algo... 每周最少一更,求出题,求虐待 At least once a week, ask for problems and abuse 简...

    pakolagij 评论0 收藏0
  • PHP 的方式实现的各类算法合集

    摘要:数据项是数据的不可分割的最小单位。数据项是对客观事物某一方面特性的数据描述。数据对象是性质相同的数据元素的集合,是数据的一个子集。数据的逻辑结构数据元素之间的相互关系称为逻辑结构。 项目地址 https://github.com/m9rco/algo... 每周最少一更,求出题,求虐待 At least once a week, ask for problems and abuse 简...

    leonardofed 评论0 收藏0
  • PHP基础

    摘要:分别为适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。设计模式五适配器模式适配器模式将某个对象的接生成器和协程的实现在这篇文章中,作者针对那些比较难以理解的概念,以一个更为通俗的方式去讲明白。。 PHP 源码注解 PHP 的详细源码注解 PHP 字符串操作整理 一些有关字符串的常用操作。 Redis 常见七种使用场景 (PHP 实战) 这篇文章主要介绍利用 R...

    HtmlCssJs 评论0 收藏0

发表评论

0条评论

xcc3641

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<