整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。
Author: heiyeluren
Blog:
http://blog.csdn.net/heiyeshuwu
Date: 2006-06-10 23:50
<?
//--------------------
//基本数据结构算法
//--------------------
//二分查找(数组里查找某个元素)
functionbin_sch($array,$low,$high,$k){
if($low<=$high){
$mid=intval(($low+$high)/2);
if($array[$mid]==$k){
return$mid;
}elseif($k<$array[$mid]){
returnbin_sch($array,$low,$mid-1,$k);
}else{
returnbin_sch($array,$mid+1,$high,$k);
}
}
return-1;
}
//顺序查找(数组里查找某个元素)
functionseq_sch($array,$n,$k){
$array[$n]=$k;
for($i=0;$i<$n;$i++){
if($array[$i]==$k){
break;
}
}
if($i<$n){
return$i;
}else{
return-1;
}
}
//线性表的删除(数组中实现)
functiondelete_array_element($array,$i)
{
$len=count($array);
for($j=$i;$j<$len;$j++){
$array[$j]=$array[$j+1];
}
array_pop($array);
return$array;
}
//冒泡排序(数组排序)
functionbubble_sort($array)
{
$count=count($array);
if($count<=0)returnfalse;
for($i=0;$i<$count;$i++){
for($j=$count-1;$j>$i;$j--){
if($array[$j]<$array[$j-1]){
$tmp=$array[$j];
$array[$j]=$array[$j-1];
$array[$j-1]=$tmp;
}
}
}
return$array;
}
//快速排序(数组排序)
functionquick_sort($array){
if(count($array)<=1)return$array;
$key=$array[0];
$left_arr=array();
$right_arr=array();
for($i=1;$i<count($array);$i++){
if($array[$i]<=$key)
$left_arr[]=$array[$i];
else
$right_arr[]=$array[$i];
}
$left_arr=quick_sort($left_arr);
$right_arr=quick_sort($right_arr);
returnarray_merge($left_arr,array($key),$right_arr);
}
//------------------------
//PHP内置字符串函数实现
//------------------------
//字符串长度
functionstrlen($str)
{
if($str=='')return0;
$count=0;
while(1){
if($str[$count]!=NULL){
$count++;
continue;
}else{
break;
}
}
return$count;
}
//截取子串
functionsubstr($str,$start,$length=NULL)
{
if($str==''||$start>strlen($str))return;
if(($length!=NULL)&&($start>0)&&($length>strlen($str)-$start))return;
if(($length!=NULL)&&($start<0)&&($length>strlen($str)+$start))return;
if($length==NULL)$length=(strlen($str)-$start);
if($start<0){
for($i=(strlen($str)+$start);$i<(strlen($str)+$start+$length);$i++){
$substr.=$str[$i];
}
}
if($length>0){
for($i=$start;$i<($start+$length);$i++){
$substr.=$str[$i];
}
}
if($length<0){
for($i=$start;$i<(strlen($str)+$length);$i++){
$substr.=$str[$i];
}
}
return$substr;
}
//字符串翻转
functionstrrev($str)
{
if($str=='')return0;
for($i=(strlen($str)-1);$i>=0;$i--){
$rev_str.=$str[$i];
}
return$rev_str;
}
//字符串比较
functionstrcmp($s1,$s2)
{
if(strlen($s1)<strlen($s2))return-1;
if(strlen($s1)>strlen($s2))return1;
for($i=0;$i<strlen($s1);$i++){
if($s1[$i]==$s2[$i]){
continue;
}else{
returnfalse;
}
}
return0;
}
//查找字符串
functionstrstr($str,$substr)
{
$m=strlen($str);
$n=strlen($substr);
if($m<$n)returnfalse;
for($i=0;$i<=($m-$n+1);$i++){
$sub=substr($str,$i,$n);
if(strcmp($sub,$substr)==0)return$i;
}
returnfalse;
}
//字符串替换
functionstr_replace($substr,$newsubstr,$str)
{
$m=strlen($str);
$n=strlen($substr);
$x=strlen($newsubstr);
if(strchr($str,$substr)==false)returnfalse;
for($i=0;$i<=($m-$n+1);$i++){
$i=strchr($str,$substr);
$str=str_delete($str,$i,$n);
$str=str_insert($str,$i,$newstr);
}
return$str;
}
//--------------------
//自实现字符串处理函数
//--------------------
//插入一段字符串
functionstr_insert($str,$i,$substr)
{
for($j=0;$j<$i;$j++){
$startstr.=$str[$j];
}
for($j=$i;$j<strlen($str);$j++){
$laststr.=$str[$j];
}
$str=($startstr.$substr.$laststr);
return$str;
}
//删除一段字符串
functionstr_delete($str,$i,$j)
{
for($c=0;$c<$i;$c++){
$startstr.=$str[$c];
}
for($c=($i+$j);$c<strlen($str);$c++){
$laststr.=$str[$c];
}
$str=($startstr.$laststr);
return$str;
}
//复制字符串
functionstrcpy($s1,$s2)
{
if(strlen($s1)==NULL||!isset($s2))return;
for($i=0;$i<strlen($s1);$i++){
$s2[]=$s1[$i];
}
return$s2;
}
//连接字符串
functionstrcat($s1,$s2)
{
if(!isset($s1)||!isset($s2))return;
$newstr=$s1;
for($i=0;$i<count($s);$i++){
$newstr.=$st[$i];
}
return$newsstr;
}
//简单编码函数(与php_decode函数对应)
functionphp_encode($str)
{
if($str==''&&strlen($str)>128)returnfalse;
for($i=0;$i<strlen($str);$i++){
$c=ord($str[$i]);
if($c>31&&$c<107)$c+=20;
if($c>106&&$c<127)$c-=75;
$word=chr($c);
$s.=$word;
}
return$s;
}
//简单解码函数(与php_encode函数对应)
functionphp_decode($str)
{
if($str==''&&strlen($str)>128)returnfalse;
for($i=0;$i<strlen($str);$i++){
$c=ord($word);
if($c>106&&$c<127)$c=$c-20;
if($c>31&&$c<107)$c=$c+75;
$word=chr($c);
$s.=$word;
}
return$s;
}
//简单加密函数(与php_decrypt函数对应)
functionphp_encrypt($str)
{
$encrypt_key='abcdefghijklmnopqrstuvwxyz1234567890';
$decrypt_key='ngzqtcobmuhelkpdawxfyivrsj2468021359';
if(strlen($str)==0)returnfalse;
for($i=0;$i<strlen($str);$i++){
for($j=0;$j<strlen($encrypt_key);$j++){
if($str[$i]==$encrypt_key[$j]){
$enstr.=$decrypt_key[$j];
break;
}
}
}
return$enstr;
}
//简单解密函数(与php_encrypt函数对应)
functionphp_decrypt($str)
{
$encrypt_key='abcdefghijklmnopqrstuvwxyz1234567890';
$decrypt_key='ngzqtcobmuhelkpdawxfyivrsj2468021359';
if(strlen($str)==0)returnfalse;
for($i=0;$i<strlen($str);$i++){
for($j=0;$j<strlen($decrypt_key);$j++){
if($str[$i]==$decrypt_key[$j]){
$enstr.=$encrypt_key[$j];
break;
}
}
}
return$enstr;
}
?>