PHP实现各种经典算法
<??
//--------------------?
//?基本數(shù)據(jù)結(jié)構(gòu)算法
//--------------------?
//二分查找(數(shù)組里查找某個元素)?
function?bin_sch($array,??$low,?$high,?$k){??
????if?(?$low?<=?$high){??
????????$mid?=??intval(($low+$high)/2?);??
????????if?($array[$mid]?==??$k){??
????????????return?$mid;??
????????}elseif?(?$k?<?$array[$mid]){??
????????????return??bin_sch($array,?$low,??$mid-1,?$k);??
????????}else{??
????????????return??bin_sch($array,?$mid+?1,?$high,?$k);??
????????}??
????}??
????return?-1;??
}??
//順序查找(數(shù)組里查找某個元素)?
function??seq_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;??
????}??
}??
//線性表的刪除(數(shù)組中實現(xiàn))?
function?delete_array_element($array?,?$i)?
{?
????????$len?=??count($array);??
????????for?($j=?$i;?$j<$len;?$j?++){?
????????????????$array[$j]?=?$array?[$j+1];?
????????}?
????????array_pop?($array);?
????????return?$array?;?
}?
//冒泡排序(數(shù)組排序)?
function?bubble_sort(?$array)?
{?
????????$count?=?count(?$array);?
????????if?($count?<=?0?)?return?false;?
????????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;?
}?
//快速排序(數(shù)組排序)?
function?quick_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);?
????????return?array_merge($left_arr?,?array($key),?$right_arr);?
}?
//------------------------?
//?PHP內(nèi)置字符串函數(shù)實現(xiàn)?
//------------------------?
//字符串長度?
function?strlen?($str)?
{?
????????if?($str?==?''?)?return?0;?
????????$count?=??0;?
????????while?(1){?
????????????????if?(?$str[$count]?!=?NULL){?
?????????????????????????$count++;?
????????????????????????continue;?
????????????????}else{?
????????????????????????break;?
????????????????}?
????????}?
????????return?$count;?
}?
//截取子串?
function?substr($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;?
}?
//字符串翻轉(zhuǎn)?
function?strrev($str)?
{?
????????if?($str?==?'')?return?0?;?
????????for?($i=(strlen($str)-?1);?$i>=0;?$i?--){?
????????????????$rev_str?.=?$str[$i?];?
????????}?
????????return?$rev_str;?
}?
//字符串比較?
function?strcmp($s1,??$s2)?
{?
????????if?(strlen($s1)?<??strlen($s2))?return?-1?;?
????????if?(strlen($s1)?>?strlen(?$s2))?return?1;?
????????for?($i?=0;?$i<strlen($s1?);?$i++){?
????????????????if?($s1[?$i]?==?$s2[$i]){?
????????????????????????continue;?
????????????????}else{?
????????????????????????return?false;?
????????????????}?
????????}?
????????return??0;?
}?
//查找字符串?
function??strstr($str,?$substr)?
{?
?????????$m?=?strlen($str);?
????????$n?=?strlen($substr?);?
????????if?($m?<?$n)?return?false?;?
????????for?($i=0;?$i?<=($m-$n+1);?$i?++){?
????????????????$sub?=?substr(?$str,?$i,?$n);?
????????????????if?(?strcmp($sub,?$substr)?==??0)??return?$i;?
????????}?
????????return?false?;?
}?
//字符串替換?
function?str_replace($substr?,?$newsubstr,?$str)?
{?
?????????$m?=?strlen($str);?
????????$n?=?strlen($substr?);?
????????$x?=?strlen($newsubstr?);?
????????if?(strchr($str,?$substr?)?==?false)?return?false;?
????????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?;?
}?
//--------------------?
//?自實現(xiàn)字符串處理函數(shù)
//--------------------?
//插入一段字符串?
function?str_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?;?
}?
//刪除一段字符串?
function?str_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;?
}?
//復(fù)制字符串?
function?strcpy($s1,?$s2?)?
{?
????????if?(strlen($s1)==NULL?||?!isset(?$s2))?return;?
????????for?($i=0?;?$i<strlen($s1);??$i++){?
????????????????$s2[]?=?$s1?[$i];?
????????}?
????????return?$s2;?
}?
//連接字符串?
function?strcat($s1?,?$s2)?
{?
????????if?(!isset($s1)?||?!isset(?$s2))?return;?
????????$newstr?=?$s1?;?
????????for($i=0;?$i?<count($s);?$i?++){?
????????????????$newstr?.=?$st[$i?];?
????????}?
????????return?$newsstr;?
}?
//簡單編碼函數(shù)(與php_decode函數(shù)對應(yīng))?
function?php_encode($str)?
{?
????????if?(?$str==''?&&?strlen(?$str)>128)?return?false;?
????????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;??
}?
//簡單解碼函數(shù)(與php_encode函數(shù)對應(yīng))?
function?php_decode($str)?
{?
????????if?(?$str==''?&&?strlen($str?)>128)?return?false;?
????????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;??
}?
//簡單加密函數(shù)(與php_decrypt函數(shù)對應(yīng))?
function?php_encrypt($str)?
{?
?????????$encrypt_key?=?'abcdefghijklmnopqrstuvwxyz1234567890';?
?????????$decrypt_key?=?'ngzqtcobmuhelkpdawxfyivrsj2468021359';?
????????if?(?strlen($str)?==?0)?return??false;?
????????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;?
}?
//簡單解密函數(shù)(與php_encrypt函數(shù)對應(yīng))?
function?php_decrypt($str)?
{?
?????????$encrypt_key?=?'abcdefghijklmnopqrstuvwxyz1234567890';?
?????????$decrypt_key?=?'ngzqtcobmuhelkpdawxfyivrsj2468021359';?
????????if?(?strlen($str)?==?0)?return??false;?
????????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;?
}?
?>?
轉(zhuǎn)載于:https://www.cnblogs.com/ZDPPU/p/5922327.html
總結(jié)
以上是生活随笔為你收集整理的PHP实现各种经典算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCV-CL: OpenCL加速计
- 下一篇: PHP require和include的