欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

数据结构和字符串处理代码整理

程序员文章站 2022-05-16 20:11:58
...

数据|数据结构|字符串

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

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; $icount($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) && ($start0) && ($length>strlen($str)+$start)) return;
if (
$length == NULL) $length = (strlen($str) - $start
);

if (
$start 0){
for (
$i=(strlen($str)+$start); $istrlen($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; $istrlen($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; $istrlen($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; $jstrlen($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); $cstrlen($str); $c++){
$laststr .= $str[$c
];
}
$str = ($startstr . $laststr
);

return
$str
;
}

//复制字符串
function strcpy($s1, $s2
)
{
if (
strlen($s1)==NULL || !isset($s2
)) return;

for (
$i=0; $istrlen($s1); $i++){
$s2[] = $s1[$i
];
}
return
$s2
;
}

//连接字符串
function strcat($s1, $s2
)
{
if (!isset(
$s1) || !isset($s2
)) return;
$newstr = $s1
;
for(
$i=0; $icount($s); $i++){
$newstr .= $st[$i
];
}
return
$newsstr
;
}

//简单编码函数(与php_decode函数对应)
function php_encode($str
)
{
if (
$str=='' && strlen($str)>128) return false
;

for(
$i=0; $istrlen($str); $i++){
$c = ord($str[$i
]);
if (
$c>31 && $c107) $c += 20;
if (
$c>106 && $c127) $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; $istrlen($str); $i++){
$c = ord($word
);
if (
$c>106 &&, amp; $c127) $c = $c-20;
if (
$c>31 && $c107) $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; $istrlen($str); $i++){
for (
$j=0; $jstrlen($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; $istrlen($str); $i++){
for (
$j=0; $jstrlen($decrypt_key); $j++){
if (
$str[$i] == $decrypt_key[$j
]){
$enstr .= $encrypt_key[$j
];
break;
}
}
}

return
$enstr
;
}

?>