php
php及算法
兰叶书
这个作者很懒,什么都没留下…
展开
-
微信分账-添加分账接收方v3
【微信支付平台证书、商户API证书、商户API私钥】【V3密钥、公众账号ID、运营方商户号、运营方商户api证书序列号、运营方微信支付平台证书序列号、随机串、当前时间戳、该证书只能通过接口获得,首次下载用命令下载比较好一些。4、加密后的分账接收方商户名。3、商户API证书、密钥。5、由签名值计算的签名串。、分账接收方商户号、2、微信支付平台证书。原创 2023-10-19 14:18:17 · 571 阅读 · 0 评论 -
二叉树遍历模板(PHP)
1、前序遍历(中左右)function arr($root) { if (empty($root)) { return []; } //前序遍历代码 $val= [$root->val]; $left = $this->arr($root->left); $right = $this->arr($root->right); //注意参数顺序 return array_merge($val,原创 2020-10-26 15:20:20 · 97 阅读 · 0 评论 -
排序算法之基数排序
基数排序是非比较的排序算法,对每一位进行排序,从最低位开始排序,直至最后一位。思路:1、获得数组中最大数,开取得其位数;2、从最低位开始取每个位组成新数组;3、对新数组进行计数排序(利用计数排序适用于小范围数的特点)。<?phpfunction radix_sort($arr){ //定义排序桶 $sort = array_fill(0,9,array()); $len = strlen(max($arr)); echo $num; for($i=0;$i<原创 2020-09-15 18:43:53 · 145 阅读 · 0 评论 -
排序算法之计数排序
计数排序是将输入的数据值转为键存储在额外开辟的数组空间中。做为线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。思路:1、找出待排序的数组中最大和最小的元素;2、统计数组中每个值为i的元素出现的次数,存入数组C的第i项;3、对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);4、反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1。...原创 2020-09-15 17:17:03 · 164 阅读 · 0 评论 -
排序算法之堆排序
堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或大于)它的父结点。思路:1、将待排序序列构造成一个大顶堆2、此时,整个序列的最大值就是堆顶的根节点3、将其与末尾元素进行交换,此时末尾就为最大值4、然后将剩余n-1个元素重新构造成一个堆,这样就会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了注:每个结点的值都大于或等于其左右子结点的值,称为大顶堆;每个结点的值都小于或等于其左右子原创 2020-09-11 15:24:39 · 239 阅读 · 0 评论 -
排序算法之希尔排序
希尔排序又叫缩小增量排序,是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。思路:...原创 2020-09-11 14:07:02 · 269 阅读 · 0 评论 -
排序算法之归并排序
归并排序是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。思路:1、把长度为n的序列分为两个长度为n/2的子序列;2、对这两个子序列分别采用归并排序;3、将两个排序好的子序列合并成一个最终的排序序列。<?phpfunction merge_sort($arr){ $len = count($arr); if($len<=1) return $a原创 2020-08-31 20:03:23 · 86 阅读 · 0 评论 -
排序算法之插入排序
插入排序是一种最简单的排序方法。适用于已经有部分数据已经排好,并且排好的部分越大越好。一般在输入规模大于1000的场合不建议使用插入排序。思路:1、从第一个元素开始,该元素被默认有序;2、取出下一个元素,在已排序的元素中从后向前扫描;3、如果该元素(已排序)大于新元素,将该元素移至下一位置,直到找到已排序的元素小于或等于新元素的位置,将新元素插入到该位置后;4、重复2-3。<?phpfunction insert_sort($arr){ $len = coun原创 2020-08-31 17:05:55 · 131 阅读 · 0 评论 -
排序算法之选择排序
选择排序是一种简单直观的排序算法。思路:1、在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。2、从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。3、以此类推,直到所有元素均排序完毕。<?phpfunction select_sort($arr){ $len = count($arr); for($i=0;$i<$len;$i++){ $min_index = $i; for($j=$i;$j<$len;$原创 2020-08-31 16:19:30 · 131 阅读 · 0 评论 -
排序算法之快速排序
快速排序是使用分治法将一个串分为两个子串。一、基础思想:1、先从数列中取出一个数作为基准数。2、分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3、再对左右区间重复第二步,直到各区间只有一个数。<?phpfunction quick_sort($arr){ if(count($arr)<=1){ return $arr; } $tmp = $arr[0]; //基数 $left = $right = array(原创 2020-08-31 13:51:08 · 85 阅读 · 0 评论 -
排序算法之冒泡排序
冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。一、基础思路:1、如果元素大小关系不正确,交换这两个数(在本例中为a> b)2、比较一对相邻元素(a,b)3、重复步骤1和2,直到我们到达数组的末尾(最后一对是第(N-2)和(N-1)项,因为我们的数组从零开始)4、到目前为止,最大的元素将在最后的位置。 然后我们将N减少1,并重复步骤1,直到N = 1。<?php$arr = array(20,10,35,42,9);$.原创 2020-08-31 10:43:15 · 194 阅读 · 0 评论 -
排序算法之桶排序
桶排序其工作原理是将数组分到有限数量的桶里,每个桶里的数据再根据需求进行排序。一、基础将数组arr = (5,7,3,6,9,6,7)排序思路:1、创建0-10的新数组res,并设置初始值为0。2、循环处理arr数组元素,将其放入对应的桶里。例,arr[0]=5,res[5]=1;arr[1]=7.res[7]=1;……arr[6]=7,res[7]=2。3、循环res,res[n]里出现几就打印几次。源码:<?php$arr = array(5,7,3,6,9原创 2020-08-28 19:26:55 · 104 阅读 · 0 评论 -
常用算法
一、排序、查找算法1、选择排序2、冒泡排序3、插入排序4、快速排序5、归并排序6、希尔排序7、堆排序8、计数排序9、桶排序10、基数排序11、二分查找二、布隆过滤器布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。个人理解:多个hash组成的数组判断内容是否存在应用于1)、设置黑名单,判断垃圾邮件2)、爬虫系统,记录爬过的连接,避免重复爬取3)、防止缓存击穿(原创 2020-08-20 18:38:31 · 122 阅读 · 0 评论 -
Linux Centos 安装php扩展 SeasLog
1、下载wget https://pecl.php.net/get/SeasLog-1.9.0.tgz官网地址https://pecl.php.net/package/SeasLog2、#解压tar -zxvf SeasLog-1.9.0.tgz cd SeasLog-1.9.0#通过phpize来扩展,phpize(phpize是用来扩展php扩展模块的,通过p...原创 2019-10-22 17:25:47 · 527 阅读 · 0 评论 -
php 高频写入性能测试
1、使用fopen fwrite fclose<?php//使用fopen fwrite fclose【write_log1.php】 function write($con){ $path = "/data/logs"; $filedir = $path . "/log.log"; //清除缓存 clearstatcache(); // 文件不存在 if ...原创 2019-10-21 20:19:47 · 704 阅读 · 0 评论