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

整理一下以前写的部分算法和字符串处理函数,东西没有什么用,只是为了学习而已。
http://blog.csdn.net/heiyeshuwu/article/details/787426
Author: heiyeluren
Blog: 
http://blog.csdn.net/heiyeshuwu
Date: 2006-06-10 23:50

<?
//--------------------
// 基本数据结构算法
//-------------------- 

//二分查找(数组里查找某个元素)
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
;
}  

//顺序查找(数组里查找某个元素)
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
;
}
}  

//线性表的删除(数组中实现)
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
;

//冒泡排序(数组排序)
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
;

//快速排序(数组排序)
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内置字符串函数实现
//------------------------ 

//字符串长度
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
;

//字符串翻转
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
;

//--------------------
// 自实现字符串处理函数
//-------------------- 

//插入一段字符串
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;

//复制字符串
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
;

//简单编码函数(与php_decode函数对应)
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;

//简单解码函数(与php_encode函数对应)
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;

//简单加密函数(与php_decrypt函数对应)
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;

//简单解密函数(与php_encrypt函数对应)
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;

?> 

 

原文链接: https://www.cnblogs.com/gxldan/archive/2011/07/03/4066689.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

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

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/28049

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午5:37
下一篇 2023年2月8日 上午5:37

相关推荐