旧文重整理:数据结构和字符串处理代码整理

本文介绍了几种基础的数据结构算法,包括二分查找、顺序查找、线性表删除、冒泡排序和快速排序,并实现了字符串长度、截取子串等字符串处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。

Author: heiyeluren
Blog: http://blog.youkuaiyun.com/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 ]){
return
bin_sch($array,$low,$mid-1,$k );
}else{
return
bin_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 );

return
array_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{
return
false ;
}
}
return
0 ;
}


//查找字符串
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 ;
}
return
false ;
}

//字符串替换
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 ;
}

?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值