
算法
do better myself
学无止境、只有不断的学习,你才不会被社会淘汰!加油吧!少年!
展开
-
PHP获取文件扩展名的方法
//方法1$str = '/www/htdocs/your_image.jpg';return end(explode('.', $str));//方法2$info = pathinfo($str);return $info['extension'];原创 2016-01-18 14:15:27 · 363 阅读 · 0 评论 -
php冒泡排序算法和快速排序算法
许多人都说算法是程序的核心,算法的好坏决定了程序的质量。作为一个初级phper,虽然很少接触到算法方面的东西。但是对于基本的排序算法还是应该掌握的,它是程序开发的必备工具。这里介绍冒泡排序,插入排序,选择排序,快速排序四种基本算法,分析一下算法的思路。前提:分别用冒泡排序法,快速排序法,选择排序法,插入排序法将下面数组中的值按照从小到大的顺序进行排序。?原创 2016-01-11 16:50:11 · 663 阅读 · 0 评论 -
php结合redis实现高并发下的抢购、秒杀功能
抢购、秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少("超卖"问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题常规写法:查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就转载 2018-01-25 11:37:01 · 275 阅读 · 0 评论 -
系统性能定位和优化方法
一般先排除是不是网络的原因,假如打开百度网页快的话,就是内部系统的问题,先使用top查看cpu利用率和磁盘,假如CPU高的话就是大量的SQL计算,数据库瓶颈高,慢查询导致。Throughput ,吞吐量。也就是每秒钟可以处理的请求数,任务数。Latency, 系统延迟。也就是系统在处理一个请求或一个任务时的延迟。首先,当我们系统有问题的时候,我们不要急于去调查我原创 2017-12-21 19:27:55 · 454 阅读 · 0 评论 -
二叉树详解
一 二叉树的一些概念二叉树就是每个结点最多有两个子树的树形存储结构。先上图,方便后面分析。 1 满二叉树和完全二叉树 上图就是典型的二叉树,其中左边的图还叫做满二叉树,右边是完全二叉树。然后我们可以得出结论,满二叉树一定是完全二叉树,但是反过来就不一定。满二叉树的定义是除了叶子结点,其它结点左右孩子都有,深度为k的满二叉树,结点数就是转载 2018-01-19 19:23:36 · 294 阅读 · 0 评论 -
笔试题算法
有一个包含从1到n的数组,数字排序乱序且不重复(假设n=10),例如[1,5,8,3,4,9,2,6,7,10]。函数randomDeleter随机删除其中3个数字,并返回结果(例如:输入原始数组,随机删掉5、9、7,返回数组[1,8,3,4,2,6,10])。请写一个函数找出被删除的3个数字。 function randomDeleter($arr) { $i = 0; ...原创 2018-04-02 11:33:27 · 245 阅读 · 0 评论 -
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
for ( $i = 1; $i <= 4; $i++) { for ($j = 1; $j <= 4; $j++) { for ($k = 1; $k <= 4; $k ++) { if ($i!=$j && $i != $k && $j !=$k) {...原创 2018-03-27 18:00:46 · 382 阅读 · 0 评论 -
微信红包的算法实现探讨(基于PHP)
今晚突发奇想给校友微信群发了红包,我设定红包总额为10元,支持28个人随机领取。于是一个有趣的结果出现了:A 领取了 0.26元B 领取了 0.29元C 领取了 0.02元D 领取了 0.56元E 领取了 0.64元……微信是采用什么样的算法做到的?简单百度了下,目前尚未有官方的说明,仅仅在知乎里有一个较为热门的讨论,链接戳这里,不过他们讨论的太过于深入,有掉坑之嫌。我按照自己的逻辑尝试了下,这个...转载 2018-03-28 09:37:40 · 824 阅读 · 0 评论 -
算法时间复杂度和空间复杂度
时间复杂度:执行算法所需要的时间空间复杂度:执行算法所需要的内存空间常见时间复杂度 例如:常数阶O(1)、线性阶O(n)、平方阶O(n^2)、立方阶O(n^3)、对数阶O(log2n)、nlog2n阶O(nlog2n)、指数阶O(n^n)效率从大到小:O(1) > O(log2n) > O(n) > O(nlog2n) > O(n^2) > O(n^3) >...转载 2018-05-02 11:43:00 · 547 阅读 · 0 评论 -
韩信点兵问题算法
问题描述:韩信带兵不足百人,3人一行排列多一人,5人一行排列正好,7人一行排列少两人,求士兵的人数?问题解析:假设士兵的人数为x人,则需要(x-1)/3是整数,x/5是整数,(x+2)/7是整数。代码实现如下:package com.java.test; public class Demo7 { public static void main(String[]...转载 2018-12-07 09:50:18 · 3663 阅读 · 0 评论 -
PHP 递归和递推思想
递归思想(递归函数):递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身。(求n!问题用递归;杨辉三角问题用过递归…)<?php funtion digui($n){ if($n==1){ return 1; } return digui($n-1)*$n; } $a...转载 2019-08-06 14:21:00 · 190 阅读 · 0 评论 -
PHP高级面试题
1.写出一个能创建多级目录的PHP函数 function createdir($path,$mode){ if (is_dir($path)){ //判断目录存在否,存在不创建 echo "目录'" . $path . "'已经存在"; }else{ //不存在创建转载 2017-11-22 11:29:09 · 409 阅读 · 0 评论 -
PHP实现乘法表
for($i = 1;$i 9; $i++){ for($j = 1;$j $i; $j++){ echo $j."*".$i."=".$j*$i; } echo "";}原创 2016-01-18 10:24:19 · 1318 阅读 · 0 评论 -
二叉查找树
先了解一下二叉查找树,它是一种经典的数据结构,其左子树的值总是小于根的值,右子树的值总是大于根的值,如下图①。如果要在这课树中查找值为5的记录,其大致流程:先找到根,其值为6,大于5,所以查找左子树,找到3,而5大于3,接着找3的右子树,总共找了3次。同样的方法,如果查找值为8的记录,也需要查找3次。所以二叉查找树的平均查找次数为(3 + 3 + 3 + 2 + 2 + 1) / 6 = 2.3次转载 2017-05-31 14:53:10 · 852 阅读 · 0 评论 -
php如何计算一个字符串的每个字符出现的次数
$str = "sdfhletlsflahlajgfd;lsje;r;wj;ralajfe149253573";//字符串分隔到数组中$arr = str_split($str);//用于统计数组中所有值出现的次数,返回一个数组$arr = array_count_values($arr);//键名为原数组的键值,键值为出数arsort($arr);//按键值倒序排列print_r($ar原创 2016-01-19 13:32:12 · 1076 阅读 · 0 评论 -
调用物流接口按时间正序显示数据
$followingInfo = $this->getOgisticsInfoByNum($company,$typeNu);$count = count($followingInfo['data']);//按时间正序排列foreach($followingInfo['data'] as $key => $val){ $followingInfo['data'][$count -原创 2016-01-19 16:02:33 · 575 阅读 · 0 评论 -
php二分查找算法
function binarySearch($arr,$target){$low = 0; $high = count($arr)-1; while($low $mid = intval(($low+$high)/2); #找到元素 if ($arr[$mid]) == $target) return原创 2016-01-11 17:08:20 · 523 阅读 · 0 评论 -
如何把1234567890变成1,234,567,890?
$str='1234567890';function getString($str){ $str = strrev($str); $str = chunk_split($str,3,','); $str = strrev($str); $str = trim($str,',');//表示去掉两端的这样的字符 return $str;}//chu原创 2016-01-18 14:05:10 · 1481 阅读 · 0 评论 -
php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
/* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选转载 2016-11-17 11:48:48 · 398 阅读 · 0 评论 -
第三方数据对接公钥和私钥的生成步骤和非对称加密算法rsa
1.首先查找openssl安装的具体位置:which openssl2.进入到安装目录:/usr/bin/openssl3.执行生成genrsa -out rsa_private_key.pem 1024 私钥的方法4.执行生成rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem 公钥的方法5.exit退出6.l原创 2017-02-17 11:42:07 · 2515 阅读 · 0 评论 -
支付宝生成支付二维码的过程
$arr = array(); $temp1 = array('A','2','3','4','5','6','7','8','9','10','J','Q','K',); $temp2 = array('黑桃','红桃','梅花','方块'); foreach ($temp1 as $v) { for原创 2023-06-20 10:03:32 · 1776 阅读 · 0 评论 -
54张牌随机生成3张不同的牌的算法
$arr = array(); $temp1 = array('A','2','3','4','5','6','7','8','9','10','J','Q','K',); $temp2 = array('黑桃','红桃','梅花','方块'); foreach ($temp1 as $v) { for原创 2017-03-01 15:46:12 · 1390 阅读 · 1 评论 -
PHP中数组的三种排序方法
一、冒泡排序法 说明:找到最大的数,排列到最后面,然后继续找 例:$arr = array(3,5,-1,0,2);for($i=0;$i for($j=0;$j if($arr[$j]>$arr[$j+1]){ $temp = $arr[$j]; $arr[$j]=$arr[$j+1];转载 2017-03-07 10:21:28 · 313 阅读 · 0 评论 -
分批获取司机信息算法
$i = 0; $size = 10; foreach($newDriverIdArr as $key => $row) { $driverArr[$i/$size][] = $row; //0/10=0,1/10=1,=====$driverArr[0][],$原创 2017-05-24 22:50:29 · 338 阅读 · 0 评论 -
教你如何写递归
递归算法是最让初级程序员头疼的一个算法,那么具体要怎么写递归呢,让我来教你,跟我来吧。思路写出结果表达式 确定单次循环 确定结束条件实战题目:算阶乘 n!按照上面的思路分析1.结果表达式: 1+2+3+4+....n2.确定单次循环假设一个函数f(n)可以完成这件事情则f(2) = 1+2这样表达式就变成 f(2)+3+4+....n,因此有f(3) = f(2)...转载 2019-08-28 09:33:28 · 4148 阅读 · 2 评论