随笔分类 -  php算法

摘要:问题: 一个有序数组,值有可能有负值,也有可能没有,现需要找出其中绝对值最小的值。 方法1: 遍历数组,找到绝对值最小值,时间复杂度O(n),n为元素个数。 方法2: 二分查找,因为数组有序,可以利用二分查找,时间复杂度O(logn)。 分析步骤: 如果第一个数为正数,说明整个数组没有负数,直接返回 阅读全文
posted @ 2016-05-07 18:24 leezhxing 阅读(2915) 评论(2) 推荐(0) 编辑
摘要:场景: 一群猴子排成一圈,按1,2,…,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数, 再数到第m只,在把它踢出去…,如此不停的进行下去, 直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。 方法1.通过从队首弹出再 阅读全文
posted @ 2016-04-24 09:20 leezhxing 阅读(433) 评论(0) 推荐(0) 编辑
摘要:堆排序:是一种特殊形式的选择排序,他是简单选择排序的一种改进。 什么是堆? 具有n个元素的序列:{k1,k2,ki,…,kn} (ki <= k2i,ki <= k2i+1) 或者 (ki >= k2i,ki >= k2i+1), (i = 1,2,3,4...n/2) 满足这个条件时,该序列就是一 阅读全文
posted @ 2016-03-20 12:59 leezhxing 阅读(1573) 评论(0) 推荐(0) 编辑
摘要:来源:http://blog.phpha.com/backup/archives/1683.html 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。 假设待排序的序列: 4 3 7 9 2 8 6 阅读全文
posted @ 2016-03-11 16:14 leezhxing 阅读(3523) 评论(0) 推荐(0) 编辑
摘要:问题:设计公司的员工表,员工有不同级别,要求可通过一个员工查到其下属的所有员工,也可查到其所属的上级。解决:递归实现无限分类思想,每一个员工存入其所属的上级的id作为自己的pid,另外存入path,path包含自身id,方便显示路径。递归的注意点:1.一定有一个判断条件,否则递归就死循环了2.每次的... 阅读全文
posted @ 2015-05-02 16:32 leezhxing 阅读(3553) 评论(0) 推荐(0) 编辑
摘要:插入排序: 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。 ⒈ 从第一个元素开始,该元素可以认为已经被排序 ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描 ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置 ⒋ 重复步骤3,直到找到 阅读全文
posted @ 2015-03-12 22:31 leezhxing 阅读(2299) 评论(0) 推荐(0) 编辑
摘要:目录遍历方式主要函数:opendir(), readdir(), closedir() //递归函数实现遍历指定文件下的目录与文件数量 function total( $dirname, &$dirnum, &$filenum ){ $dir=opendir($dirn... 阅读全文
posted @ 2015-01-15 11:01 leezhxing 阅读(701) 评论(0) 推荐(0) 编辑
摘要:/** * 加密、解密字符串 * * @global string $db_hash * @global array $pwServer * @param $string 待处理字符串 * @param $action 操作,ENCODE|DECODE * @return string */fun... 阅读全文
posted @ 2014-11-25 16:12 leezhxing 阅读(5567) 评论(0) 推荐(0) 编辑
摘要:栈,体现的是后进先出,即LIFO。队列,体现的是先进先出,即FIFO。 栈 array_pop() //尾出 array_push() //尾进 或 array_shift()//头进 array_unshift()//头出 用例:验证一个数学算式是否正确,比如{2*3[x*y+5+m*(i-j)/ 阅读全文
posted @ 2014-11-18 19:45 leezhxing 阅读(730) 评论(0) 推荐(0) 编辑
摘要:public static function objectToArray($d) { if (is_object($d)) { $d = get_object_vars($d); } if (is... 阅读全文
posted @ 2014-10-15 10:36 leezhxing 阅读(1315) 评论(0) 推荐(0) 编辑
摘要:// 驼峰字符串转换成下划线样式$str = 'openAPI';echo $str."";echo strtolower(preg_replace('/((?';//open_ap正则表达式补充:?: 不想被捕获的时候使用 可以提高程序执行速度$string = 'April 15, 2003';... 阅读全文
posted @ 2014-10-13 10:30 leezhxing 阅读(1704) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.oschina.net/code/snippet_613962_17070".str_rev_gb($str1)."";echo $str2."->".str_rev_gb($str2)."";echo $str3."->".str_rev_gb($str3)."";ec... 阅读全文
posted @ 2014-04-08 21:18 leezhxing 阅读(356) 评论(0) 推荐(0) 编辑
摘要:找到返回对应的key,找不到返回-1,注意二分查找需要数组有序,下边函数需要数组递增排序。 function binarySearch($arr,$x){ $start=0; $end=count($arr)-1; while($start<=$end){ $mid=intval(($start+$ 阅读全文
posted @ 2014-04-05 12:20 leezhxing 阅读(1072) 评论(0) 推荐(0) 编辑
摘要:冒泡排序原版 分别使用usort和冒泡排序对数组按name的字符串长度排序 $arr = array( array('id' => 0, 'name' => '123833'), array('id' => 0, 'name' => 'aaa'), array('id' => 0, 'name' = 阅读全文
posted @ 2013-11-09 23:56 leezhxing 阅读(551) 评论(0) 推荐(0) 编辑
摘要:array_multisort()函数对多个数组或多维数组进行排序。用法详看:http://www.w3school.com.cn/php/func_array_multisort.asp例子:把二维数组按name长度赋值给id,并重新排序。$arr = array( array('id' =... 阅读全文
posted @ 2013-11-09 23:29 leezhxing 阅读(418) 评论(0) 推荐(0) 编辑