博文

PHP实现常用排序算法(含示意动图)

图片
作为phper,一般接触算法的编程不多。 但基本的排序算法还是应该掌握。 毕竟算法作为程序的核心,算法的好坏决定了程序的质量。 本文将依次介绍一些常用的排序算法,以及PHP实现。 1 快速排序 快速排序 是由 东尼·霍尔 发展的一种排序算法。 在平均状况下,排序   n   个项目要 Ο(n  log  n) 次比较。 在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。 事实上,快速排序通常明显比其他 Ο(n  log  n)  算法更快,因为它的内部循环可以在大部分的架构上,很有效率地被实现出来。 快速排序采用分治法实现排序,具体步骤: 从数列中挑出一个数作为 基准元素 。通常选择第一个或最后一个元素。 扫描数列, 以基准元素为比较对象,把数列分成两个区 。规则是:小的移动到基准元素前面,大的移到后面,相等的前后都可以。分区完成之后,基准元素就处于数列的中间位置。 然后再用同样的方法, 递归地排序划分的两部分 。 递归的结束条件是数列的大小是 0 或 1 ,也就是永远都已经被排序好了。 PHP代码实现: function quickSort ($arr) { // 先设定结束条件,判断是否需要继续进行 if (count($arr) <= 1 ) { return $arr; } // 选择第一个元素作为基准元素 $baseValue = $arr[ 0 ]; // 初始化小于基准元素的左数组 $leftArray = array (); // 初始化大于基准元素的右数组 $rightArray = array (); // 遍历除基准元素外的所有元素,按照大小关系放入左右数组内 array_shift($arr); foreach ($arr as $value) { if ($value < $baseValue) { $leftArray[] = $value; } else { $rig...

SVN冲突解决,合并别人的修改

图片
svn co svn://*.*.*.*/project/ /www/wwwroot/ project   --username "***" --password "**" (p) postpone 暂时推后处理,我可能要和那个和我冲突的家伙商量一番 (df) diff-full 把所有的修改列出来,比比看 (e) edit 直接编辑冲突的文件 (mc) mine-conflict 如果你很有自信可以只用你的修改,把别人的修改干掉 (tc) theirs-conflict 底气不足,还是用别人修改的吧 (s) show all options 显示其他可用的命令 输入mc 解决冲突 在项目中,基本不可避免多个人同时参与一个项目,因此就可能会出现多个人同时修改一个文件的情况,就不可避免的会出现冲突。svn已经很聪明了,如果你和别人对于同一个文件的修改之间不存在重叠(比如你在文件最开始增加了一行,而你同事在文件的结尾出增加了一行),svn会自动将你们的修改进行合并,然而意外总是会发生,而且超出了svn的处理范围,只好采用人工智能(手工)来进行合并了。 要解决冲突,我们首先得制造个冲突,保证你现在已经有两个工作拷贝了,我们现在修改其中的一个,例如这里我们修改sally_calc中的main.c文件。 root@letuknowit:/home/kris/sally_calc/trunk# cat main.c #include <stdio.h> #include "add.h" #include "sub.h" int main() { printf("5 + 10 = %d.\n",add(5,10)); printf("15 - 10 = %d.\n",sub(15,10)); //sally's test printf("sally: 60 - 33 = %d.\n",sub(60,33)); return 0; } ...

SCWS 中文分词安装教程

1. 取得 scws-1.2.3 的代码 wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 2. 解开压缩包 [hightman@d1 ~]$ tar xvjf scws-1.2.3.tar.bz2 3. 进入目录执行配置脚本和编译 [hightman@d1 ~]$ cd scws-1.2.3[hightman@d1 ~/scws-1.2.3]$ ./configure --prefix=/usr/local/scws ; make ; make install 注:这里和通用的 GNU 软件安装方式一样,具体选项参数执行 ./configure --help 查看。 常用选项为:--prefix=<scws的安装目录> 4. 顺利的话已经编译并安装成功到 /usr/local/scws 中了,执行下面命令看看文件是否存在 [hightman@d1 ~/scws-1.2.3]$ ls -al /usr/local/scws/lib/libscws.la 5. 试试执行 scws-cli 文件 [hightman@d1 ~/scws-1.2.3]$ /usr/local/scws/bin/scws -h scws (scws-cli/1.2.3) Simple Chinese Word Segmentation - Command line usage. Copyright (C)2007 by hightman. ... 6 用 wget 下载并解压词典,或从主页下载然后自行解压再将 *.xdb 放入 /usr/local/scws/etc 目录中 [hightman@d1 ~/scws-1.2.3]$ cd /usr/local/scws/etc [hightman@d1 /usr/local/scws/etc]$ wget http://www.xunsearch.com/scws/down/scws-dict-chs-gbk.tar.bz2 [hightman@d1 /usr/local/scws/etc]$ wget http://www.xunsearch.com/scws/down/scws-dict-chs-utf8.tar...

【定时任务】 shell 随机n秒执行m次任务

function random() {     min=$1        max=$(($2-$min+1))        num=$(($RANDOM+1000000000))     echo $(($num%$max+$min)) } for i in {1..100} do     out=$(random 10 300);         curl DOMAIN . "/Mailer/DoSend"         sleep $out done

Linux系统查看CPU使用率的几个命令

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。而监控 CPU 的性能一般包括以下3点:运行队列、 CPU 使用率和上下文切换。 对于每一个 CPU 来说运行队列最好不要超过 3 ,例如,如果是双核 CPU 就不要超过 6。如果队列长期保持在3以上,说明任何一个进程运行时都不能马上得到cpu的响应,这时可能需要考虑升级cpu。另外满负荷运行cpu的使用率最好是user空间保持在65%~70%,system空间保持在30%,空闲保持在0%~5% 。 下面总结下查看CPU使用率常用的几个命令。 1、top 这个命令很常用,在第三行有显示CPU当前的使用情况。 [ root@li676 - 235 ~]# top - bn 1 - i - c top - 14 : 19 : 51 up 138 days , 7 : 15 , 1 user , load average : 0.20 , 0.33 , 0.39 Tasks : 115 total , 1 running , 114 sleeping , 0 stopped , 0 zombie Cpu ( s ): 4.5 % us , 3.8 % sy , 0.0 % ni , 91.0 % id , 0.6 % wa , 0.0 % hi , 0.0 % si , 0.0 % st Mem : 1014660k total , 880512k used , 134148k free , 264904k buffers Swap : 262140k total , 34788k used , 227352k free , 217144k cached PID USER PR NI VIRT RES SHR S % CPU % MEM TIME + COMMAND 12760 root 20 0 15084 1944 1632 R 2.0 0.2 0 : 00.01 top - bn 1 - i - c 如上所示,top命令可以看到总体的系统运行状态和cpu的使用率 。 %us:表示用户空间程序的cpu使用率(没有通过nice调度) %sy:...